使用 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),仅供参考

相关新闻

C语言中的运算符表达式

C语言中的运算符表达式

1.算术表达式1>概念算术表达式是用运算符号将常量、变量以及数学函数连接起来的式子。2>算术运算符又分双目运算符和单目运算符两种。每个运算符都要处理两个操作数(即运算数),操作数可以是常量、变量或者其他算数表达式,操…

2026/9/21 18:30:28 阅读更多 →
JVM调优实战:从参数配置到性能优化指南

JVM调优实战:从参数配置到性能优化指南

1. JVM调优实战:从参数配置到性能优化的完整指南在Java应用开发中,JVM调优是每个资深开发者必须掌握的技能。记得我第一次负责生产环境调优时,面对频繁的Full GC和居高不下的CPU使用率,那种手足无措的感觉至今难忘。经过多年实践&…

2026/9/21 18:29:27 阅读更多 →
使用 chrome.browsingData API 构建历史数据清理扩展:chrome-extensions-samples 实战解析

使用 chrome.browsingData API 构建历史数据清理扩展:chrome-extensions-samples 实战解析

示例工程 【免费下载链接】chrome-extensions-samples Chrome Extensions Samples 项目地址: https://gitcode.com/gh_mirrors/ch/chrome-extensions-samples 点击查看 免费下载 导读 本文以 chrome-extensions-samples 仓库中的 BrowsingData 示例 为骨架&#x…

2026/9/21 18:29:27 阅读更多 →

最新新闻

卓大师下载官网实战:3个细节搞定性能优化

卓大师下载官网实战:3个细节搞定性能优化

卓大师下载官网实战:3个细节搞定性能优化 面试被问原理答不上来,这种尴尬谁没经历过?尤其是聊到下载站这类高并发场景,张口就是“用CDN”、“加缓存”,结果被追问到底层IO阻塞或者数据库连接池泄漏,瞬间哑火。其实, 性能优化…

2026/9/21 18:56:42 阅读更多 →
小程序在线生成避坑指南,速查手册助你告别报错

小程序在线生成避坑指南,速查手册助你告别报错

小程序在线生成避坑指南,速查手册助你告别报错 盯着屏幕上的红色 StackTrace,是不是感觉脑瓜子嗡嗡的?那一长串 TypeError 和 ReferenceError…

2026/9/21 18:56:42 阅读更多 →
3个真实踩坑案例:dps文件解析避坑指南,面试不再卡壳

3个真实踩坑案例:dps文件解析避坑指南,面试不再卡壳

3个真实踩坑案例:dps文件解析避坑指南,面试不再卡壳 配置环境就卡半天,排查日志两小时,最后发现是 dps 文件解析逻辑写错了?别慌,这场景我见过太多次了。今天这篇 dps 文件 避坑指南…

2026/9/21 18:56:42 阅读更多 →
Paseo Committee Skill:以双高推理 Agent 委员会做根因分析与复杂规划

Paseo Committee Skill:以双高推理 Agent 委员会做根因分析与复杂规划

Paseo Committee Skill:以双高推理 Agent 委员会做根因分析与复杂规划 【免费下载链接】paseo Orchestrate multiple coding agents from desktop and mobile 项目地址: https://gitcode.com/gh_mirrors/pa/paseo 导读 当主 Agent 陷入死循环、反复兜圈子、…

2026/9/21 18:56:42 阅读更多 →
emmet插件底层图解原理:告别配置卡壳,3分钟掌握核心逻辑

emmet插件底层图解原理:告别配置卡壳,3分钟掌握核心逻辑

emmet插件底层图解原理:告别配置卡壳,3分钟掌握核心逻辑 配置环境就卡半天,这是很多开发者接触前端工具链时的真实写照。你明明只想快速写几个 div 标签,结果却要在 VS Code 设置里翻找半天,或者对着文档上的 !…

2026/9/21 18:56:42 阅读更多 →
Vibe 语音转写工具:离线批量转录的高效实战指南

Vibe 语音转写工具:离线批量转录的高效实战指南

Vibe 语音转写工具:离线批量转录的高效实战指南 【免费下载链接】vibe Transcribe on your own! 项目地址: https://gitcode.com/GitHub_Trending/vib/vibe Vibe 是一款基于 Whisper 引擎的本地语音转写工具,全程在你的设备上运行。它能离线转录音…

2026/9/21 18:55:41 阅读更多 →

日新闻

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and …

2026/9/21 0:00:01 阅读更多 →
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,…

2026/9/21 0:00:01 阅读更多 →
Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

桌面应用AI 应用插件系统 【免费下载链接】Wox A cross-platform launcher that simply works 项目地址: https://gitcode.com/gh_mirrors/wo/Wox 点击查看 免费下载 全功能插件(Full-featured Plugin)是 Wox 三类插件实现方式中能力最完整的…

2026/9/21 0:00:01 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/21 3:13:20 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/21 2:19:36 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/21 4:51:05 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →