多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

使用 ODBC 将 TDengine 接入 SQL Server Reporting Services (SSRS):环境搭建、报表开发与发布全流程指南

使用 ODBC 将 TDengine 接入 SQL Server Reporting Services (SSRS):环境搭建、报表开发与发布全流程指南 数据库时序数据库物联网大数据实时分析云原生【免费下载链接】tdengineTDengine is an open source, high-performance, cloud native time-series database optimized for Internet of Things (IoT), Connected Cars, Industrial IoT and DevOps.项目地址https://gitcode.com/taosdata/tdengine点击查看免费下载导读本文讲解如何在 TDengine 与微软 SQL Server Reporting ServicesSSRS之间建立标准 ODBC 连接并基于此搭建一套「数据采集 → 时序存储 → 报表制作 → 服务器发布 → 浏览器分页浏览」的完整企业级报表方案。你将掌握 TDengine 3.3.3.0 与 SQL Server 2022 Reporting Services 双服务器、双客户端的部署拓扑、WebSocket 型 ODBC 数据源的配置方法、基于超级表与last()聚合函数的报表数据集 SQL以及报表发布与权限浏览的完整操作路径。为什么选择 SSRS 对接 TDengineSQL Server Reporting ServicesSSRS是微软 SQL Server 数据库平台的内置组件提供企业级的报表创建、查看与管理能力。与擅长灵活交互式分析的另一款微软工具 Power BI 相比SSRS 更适用于传统的固定格式报表分页报表例如电网、能源、生产制造等行业中需要按固定版式周期性生成、归档和分发的报表。TDengine 支持标准 ODBC 接口这为 SSRS 的接入提供了天然通道TDengine 的高性能存储与查询能力为 SSRS 报表引擎提供实时数据源而 SSRS 的可视化报表生成功能则把 IoT、金融等领域的时间序列数据转化为直观的业务洞察。整个过程通过标准化接口完成数据交互满足企业构建跨平台报表方案的需求。两种工具的定位差异如下工具定位典型场景SSRS传统固定格式分页报表定时生成、分页浏览、服务器集中管理的业务报表Power BI灵活交互式分析拖拽式可视化、自助式探索分析参见 Power BI 集成指南集成架构两服务器 两客户端本示例需要准备两台服务器和两台客户端来构建 SSRS 示例环境网络部署如下图所示数据链路可概括为TDengine Server含 taosAdapter WebSocket 服务→ ODBC 驱动 → SSRS Server / Report Builder → Office Client浏览器。各角色的职责如下TDengine Server存储时序数据通过 taosAdapter 对外提供 WebSocket 接口默认端口 6041。ODBC 驱动的 WebSocket 连接模式正是经由该端口访问数据库。SSRS Server运行 Microsoft SQL Server 2022 Reporting Services承载报表服务与授权对外提供 Report Server Web Service URLs 地址。Report Builder Client报表开发端通过 32 位 ODBC 驱动连接 TDengine制作并上传报表。Office Client任何一台能访问 SSRS 服务器的办公电脑通过浏览器分页浏览报表。环境准备TDengine Server对操作系统无限制。安装 TDengine 3.3.3.0 或以上版本的服务端TSDB-Enterprise 与 TSDB-OSS 版本均可。确保 taosAdapter 正常运行参考 taosAdapter 参考文档。taosAdapter 是 TDengine 集群与应用之间的桥梁为各种语言的连接器提供 WebSocket 接口因此必须安装并运行。本示例服务器 IP 为192.168.2.124对外提供 WebSocket 服务端口 6041默认。SSRS Server操作系统要求为 Windows。安装 TDengine 3.3.3.0 或以上版本的 Windows 客户端默认安装 TDengine ODBC 驱动。从 ODBC 连接器参考文档可知3.2.1.0 及以上版本即包含 64 位 ODBC 驱动3.3.3.0 及以上版本同时包含 32/64 位驱动。安装 Microsoft SQL Server 2022并确保数据库服务正常运行。安装 Microsoft SQL Server 2022 Reporting Service并确保报表服务正常运行。配置 SQL Server 2022 Reporting Service 使用 IP 地址对外提供服务。记录上图所示 Report Server Web Service URLs 地址后续步骤将多次使用该地址。Report Builder 客户端操作系统要求为 Windows。安装 TDengine 3.3.3.0 或以上版本的 Windows 客户端默认安装 TDengine ODBC 驱动。安装 Microsoft Report Builder32 位它提供报表开发服务。配置 Report Builder 的报表服务器地址填入上一步记录的 Report Server Web Service URLs 地址。Office 客户端对操作系统无限制。网络要求能够连接到 SSRS 服务器。安装任意浏览器软件即可。配置 TDengine ODBC 数据源SSRS 通过 ODBC 访问 TDengine 数据源。在动手配置前先理解 TDengine ODBC 驱动的连接模型这对正确选择配置项至关重要。连接类型WebSocket 与 Native 的选择根据仓库中的 ODBC 客户端库文档TDengine ODBC 驱动支持两种连接方式WebSocket 连接推荐通过 taosAdapter 的 WebSocket 接口访问服务器。访问云服务时必须使用该方式32 位应用程序也只支持该方式。它的兼容性更好服务器升级时通常无需同步升级客户端库并支持传输压缩开关COMPRESSION0/1。Native 连接即将废弃通过 TDengine 客户端驱动taosnative库使用专有协议直接与服务器通信。性能通常略好但要求客户端驱动版本与服务器版本一致不支持云服务与 32 位应用程序。官方已宣布该连接方式将于 2027-01-01 起停止服务请迁移至 WebSocket 连接。此外需注意同一进程内 Native 与 WebSocket 连接不能混用也不允许运行时切换创建数据源时需确定唯一的连接类型。对大多数场景包括本 SSRS 示例官方推荐 WebSocket 连接这也是本示例在数据源配置中选择 WebSocket 的原因。第 1 步在 SSRS Server 上配置 ODBC 数据源64 位打开ODBC 数据源管理器64 位。选择 系统 DSN 选项卡 → 点击 添加(D)... → 选择TDengine→ 点击 完成弹出如下配置窗口按以下内容填写配置项填写内容DSN填写 TDengine连接类型Connection Type选择WebSocketURLhttp://192.168.2.124:6041用户/密码User/Password填写 TDengine 数据库用户名/密码留空则使用默认值root / taosdata点击 测试连接Test Connection连接成功说明配置正确点击 确定 保存配置。补充说明在 ODBC 驱动配置对话框中WebSocket 模式还可设置数据库可选默认连接的数据库、兼容软件如 KingSCADA、Kepware 等工业软件适配通常保持默认值 General 即可以及传输压缩开关。所有 ODBC 版本均受支持。第 2 步在 Report Builder 客户端上配置 ODBC 数据源32 位打开ODBC 数据源管理器32 位。选择 系统 DSN → 添加(D)... →TDengine→ 完成弹出 ODBC 数据源配置窗口。填入与上一步完全相同的内容DSN 为 TDengine连接类型 WebSocketURL 为http://192.168.2.124:6041以及对应的用户/密码。点击 测试连接 验证成功点击 确定 保存。需要说明的是Report Builder 客户端使用 32 位 ODBC 驱动。根据 ODBC 连接器文档 的说明TDengine ODBC 的 32 位版本仅由 TSDB-Enterprise 支持且只支持 WebSocket 连接——本示例恰好全部满足。同时要注意驱动管理器位数必须与应用程序位数一致32 位应用程序需要 32 位 ODBC 驱动管理器。ODBC 驱动还提供 BI 模式DSN 的 BI 模式设置在该模式下 TDengine 数据库不返回系统数据库与超级表子表信息适合报表工具场景。第 3 步在 Report Builder 中创建数据源连接启动 Report Builder。右键点击左侧区域的 数据源Data Source 项选择 添加数据源Add Data Source... 菜单如下图所示按以下内容填写名称Name填写数据源名称例如DataSource1。数据源方式Data Source Method选择第二项 使用嵌入我报表中的连接Use a connection embedded in my report。连接类型Connection type选择ODBC。连接字符串Connection string点击旁边的 生成(Build)... 按钮填入如上一步所示的各字段内容。点击 测试连接成功后点击 确定 保存配置。数据类型映射与接口能力参考为了让 SSRS 正确渲染 TDengine 的数据可以了解 ODBC 驱动的数据类型映射关系节选自 ODBC 连接器文档TDengine 类型SQL 类型C 类型TIMESTAMPSQL_TYPE_TIMESTAMPSQL_C_TIMESTAMPINTSQL_INTEGERSQL_C_SLONGBIGINTSQL_BIGINTSQL_C_SBIGINTFLOATSQL_REALSQL_C_FLOATDOUBLESQL_DOUBLESQL_C_DOUBLEBINARYSQL_BINARYSQL_C_BINARYNCHAR / VARCHARSQL_VARCHARSQL_C_CHARJSONSQL_WVARCHARSQL_C_WCHARGEOMETRY / VARBINARYSQL_VARBINARYSQL_C_BINARY该驱动完整导出了SQLConnect、SQLDriverConnect、SQLExecDirect、SQLPrepare、SQLExecute、SQLFetch、SQLTables、SQLColumns、SQLPrimaryKeys等标准 ODBC API可支撑 SSRS 这类报表工具的数据源枚举、元数据获取与查询执行由于 TDengine 是非事务型数据库SQLEndTran最多只能模拟提交/回滚。上述映射与 API 行为是 SSRS 报表引擎在后台自动调用的理解它们有助于排查字段类型显示异常等问题。数据准备500 台智能电表场景场景介绍某小区有 500 台智能电表数据存储在 TDengine 数据库中。电力公司要求数据运营部门制作一份能够分页浏览每台电表最近上报的电压、电流值的报表用于分析居民用电情况同时要求公司内任意一台办公电脑登录后即可浏览该报表。开发者采用微软提供的 SSRS 报表服务完成该任务使用 Report Builder 制作报表上传到报表服务器供相关人员浏览。使用超级表建模并生成数据TDengine 采用「超级表STABLE 子表」的数据模型超级表作为模板为每台设备创建独立子表每个子表代表一台电表。可以创建一个包含 500 个子表的超级表meters每个子表存储一台电表的电压在 198~235 之间波动与电流在 10A~30A 之间波动数据。仓库中 taosBenchmark 的示例配置如 dmeters.json展示了与本场景一致的建表与数据生成方式超级表名为meters包含currentFLOAT、voltageINT等数据列并通过随机函数表达式生成波动数据。实际使用时可以借助 taosBenchmark 快速生成测试数据再通过 RESTful 或 taos shell 确认数据已写入test.meters超级表。创建报表1. 新建数据集Dataset打开 Report Builder开始创建报表。新建数据集在左侧区域依次展开 DataSource → DataSource1右键选择 添加数据集Add Dataset...名称Name填写数据集名称例如DataSet1。数据集方式Dataset method选择第二项 使用嵌入我的报表中的数据集Use a dataset embedded in my report。数据源Data source选择前面创建的DataSource1。查询类型Query type选择 文本text 类型查询填入以下分析 SQLSELECT tbname as DeviceID, last(ts) as last_ts, last(current) as last_current, last(voltage) as last_voltage FROM test.meters GROUP BY tbname ORDER BY tbname;该查询的核心是 TDengine 的last()管道聚合函数。根据 TDengine SQL 函数参考 的定义LAST(expr)返回表中某列最后写入时间戳最大的非 NULL 值返回值类型与所作用字段一致适用于表与超级表。在本例中last(ts)返回每台电表最近一次上报的时间戳last(current)与last(voltage)分别返回最近一次上报的电流与电压配合GROUP BY tbname在超级表上按子表分组即可得到每台电表的最新一条记录ORDER BY tbname保证报表按设备名有序分页展示。2. 设计报表页面点击菜单 插入Insert → 表Table → 插入表Insert Table插入一个空表然后用鼠标将 DataSet1 的数据列拖拽到报表制作区右侧希望展示的列中如下图所示3. 预览点击 主页Home → 运行Run 按钮预览报表4. 退出预览点击工具栏左侧第一个 设计Design 图标关闭预览并返回设计界面继续设计。发布报表到服务器1. 保存报表到服务器点击菜单 文件File → 保存Save如下图所示2. 将报表数据源连接组件发布到服务器点击菜单 文件File → 发布报表部件Publish Report Parts选择第一项 使用默认设置发布所有报表部件Publish all report parts with default settings即可将报表连同数据源配置一起发送到服务器。浏览报表报表发布到服务器后即被共享任何客户端都可以通过浏览器访问并浏览报表数据。1. 查看报表访问地址报表查看地址位于 SSRS 服务器配置中如下所示2. 输入访问授权客户端首次访问报表数据时会弹出授权窗口要求登录输入报表服务器操作系统登录账号即可账号验证成功后将出现报表管理页面可以看到此前保存上传的报表 meters3. 分页浏览报表点击 meters即可分页查看小区内所有智能电表的最新采集数据报表管理SSRS 服务器上报表的查找、查看与管理如设置订阅、权限、历史快照等可通过 SSRS 的报表管理器Report ManagerWeb 门户完成详细操作方式可参考 Microsoft 官方关于查找、查看和管理报表的 SSRS 文档Finding, Viewing, and Managing Reports (Report Builder and SSRS)。小结通过上述过程我们基于 TDengine 数据源利用 SSRS 构建了一个完整的「报表制作 → 发布 → 分页浏览」系统数据侧TDengine 3.3.3.0 以超级表模型存储时序数据taosAdapter 在 6041 端口提供 WebSocket 服务连接侧TDengine 标准 ODBC 驱动WebSocket 连接作为 SSRS Server 与 Report Builder 客户端的数据源一次配置即可复用报表侧利用last()聚合函数按子表分组取最新值在 Report Builder 中完成表格设计、预览与发布最终通过浏览器分页浏览。围绕这一集成方案还可以进一步延伸用窗口切分查询interval()制作按小时/按天的趋势报表、用PARTITION BY数据切分查询按标签隔离子表时间序列、或用 taosAdapter 的其他接口丰富数据采集链路。更多 BI/分析工具的对接方式可参考 分析工具集成索引。赞分享数据库时序数据库物联网大数据实时分析云原生【免费下载链接】tdengineTDengine is an open source, high-performance, cloud native time-series database optimized for Internet of Things (IoT), Connected Cars, Industrial IoT and DevOps.项目地址https://gitcode.com/taosdata/tdengine点击查看免费下载相关推荐TDengine 与 SQL Server Reporting ServicesSSRS集成实战基于 ODBC 数据源的时序数据报表开发指南TDengine 与 SQL Server Reporting ServicesSSRS集成实战基于 ODBC 数据源的时序数据报表开发指南 本文以 TD数据库时序数据库大数据物联网云原生TDengine 与 SSRS 集成实践基于 ODBC 构建时序数据分页报表系统TDengine 与 SSRS 集成实践基于 ODBC 构建时序数据分页报表系统 SQL Server Reporting ServicesSSRS是微软数据库时序数据库大数据物联网云原生OpenCode开发环境搭建全流程指南OpenCode开发环境搭建全流程指南 在当今快速发展的软件开发领域拥有一个高效的编程助手已经成为提升开发效率的关键因素。OpenCode作为一款专为终端环境人工智能AI 应用AI Agent代码智能体CLI开发者工具上一篇如何快速上手React Web从安装到配置的完整指南下一篇React Web 项目教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表