SQL Server Reporting Services (SSRS) 完整教程
目录
- 什么是 SSRS? - 核心概念介绍
- 准备工作:安装与配置
- SSRS 报表生命周期:从零开始创建你的第一个报表
- 核心概念深入解析
- 数据集
- 数据源
- 参数
- 表格、矩阵与列表
- 图表
- 分组与排序
- 表达式
- 高级主题
- 钻取报表
- 条件格式
- 子报表
- 报表部署与管理
- SSRS 工具生态
- **学习资源与最佳实践
什么是 SSRS?
SQL Server Reporting Services (SSRS) 是由 Microsoft 提供的一个企业级报表平台,它允许你从多种数据源(如 SQL Server、Oracle、Excel、XML 等)中提取数据,并创建丰富的、交互式的、可打印的报表。

(图片来源网络,侵删)
核心特点:
- 中心化管理: 报表可以在一个中央服务器上创建、管理和安全地分发给用户。
- 丰富的呈现格式: 报表可以导出为多种格式,如 PDF、Excel、CSV、Word 等。
- 交互性: 用户可以通过参数筛选、钻取、展开/折叠等功能与报表进行交互。
- 可扩展性: 可以集成到 .NET 应用程序中,也可以通过 SharePoint 等平台进行扩展。
- 强大的可视化: 支持各种图表、仪表盘和自定义可视化效果。
SSRS 架构组件:
- 报表设计器: 通常是 Visual Studio 中的一个插件(或 SQL Server Data Tools),用于创建和设计报表。
- 报表服务器: 一个 Web 服务器应用程序,用于存储、处理和管理报表。
- 报表管理器: 一个基于 Web 的工具,用于访问、管理和查看部署在报表服务器上的报表。
- 报表生成器: 一个独立的、面向最终用户的报表创作工具,用户可以通过拖拽方式轻松创建和修改报表。
准备工作:安装与配置
在开始之前,你需要准备好环境。
安装组件
你需要安装以下组件(通常在 "SQL Server 安装中心" 中完成):

(图片来源网络,侵删)
- SQL Server Database Engine: 存储报表数据和报表定义。
- SQL Server Reporting Services: 报表服务器服务。
- SQL Server Data Tools (SSDT): 这是报表设计器的核心,它集成在 Visual Studio 中,如果你已经安装了 Visual Studio,可以单独安装 "SQL Server Data Tools" 扩展。
配置报表服务器
安装完成后,需要进行基本配置:
- 打开 SQL Server Configuration Manager。
- 确保名为 "SQL Server Reporting Services" 的服务已启动,并设置为“自动”。
- 打开浏览器,访问报表管理器 URL,通常是
http://<你的服务器名>/Reports。 - 首次访问时,系统可能会提示你进行配置,你需要设置一个管理员账户。
SSRS 报表生命周期:从零开始创建你的第一个报表
我们将使用 SQL Server Data Tools (SSDT) 来创建一个简单的表格报表。
步骤 1:创建新报表项目
- 打开 Visual Studio (或 SSDT)。
- 选择 "文件" -> "新建" -> "项目"。
- 在模板中,选择 "Reporting Services",然后选择 "报表服务器项目模板"。
- 为项目命名,
MyFirstSSRSProject,然后点击 "确定"。
步骤 2:添加数据源
- 在 "解决方案资源管理器" 中,右键单击 "共享数据源",选择 "添加新数据源"。
- 名称: 给你的数据源起个名字,如
AdventureWorksDataSource。 - 类型: 选择 "Microsoft SQL Server"。
- 连接字符串: 点击 "编辑",输入你的 SQL Server 服务器名称和数据库名称(使用
AdventureWorks2025示例数据库)。 - 凭据: 选择 "使用 Windows 身份验证" 或 "使用此用户名和密码"。
- 点击 "确定"。
步骤 3:添加数据集
- 在 "解决方案资源管理器" 中,右键单击 "数据集",选择 "添加数据集"。
- 名称: 命名数据集,如
SalesOrderDataset。 - 选择数据源: 从下拉列表中选择你刚刚创建的
AdventureWorksDataSource。 - 查询类型: 选择 "文本"。
- 查询: 在查询设计器中输入一个 SQL 查询语句,查询去年的销售订单:
SELECT SalesOrderID, OrderDate, CustomerID, TotalDue FROM Sales.SalesOrderHeader WHERE YEAR(OrderDate) = 2012 ORDER BY OrderDate DESC; - 点击 "确定",可以点击 "!" 图标运行查询,预览数据。
步骤 4:设计报表布局
- 在 "解决方案资源管理器" 中,双击打开 "Report1.rdlc" 文件(或右键单击项目 -> "添加" -> "新建项" -> "报表")。
- 拖放字段: 从 "数据集" 窗口中,将
SalesOrderID,OrderDate,CustomerID,TotalDue字段拖放到报表设计器的 "表" 或 "矩阵" 数据区域中,系统会自动为你创建一个表格。 - 预览报表: 点击工具栏上的 "预览" 选项卡,你应该能看到你的 SQL 查询结果以表格形式显示出来。
步骤 5:部署报表
- 在 "解决方案资源管理器" 中,双击打开 "报表服务器项目" 下的
ReportServer.project文件。 - 在 "目标URL" 中,输入你的报表管理器地址,
http://localhost/ReportServer。 - 右键单击项目名称
MyFirstSSRSProject,选择 "部署"。 - 如果一切顺利,报表将被部署到你的报表服务器上,你可以在报表管理器中找到并查看它。
核心概念深入解析
数据集
数据集是报表的数据定义,它指定了从数据源中检索数据的查询语句,一个报表可以包含多个数据集。
数据源
数据源是连接到物理数据库或数据提供程序的配置信息,它包含了连接字符串和凭据。共享数据源可以被多个报表使用,便于统一管理。

(图片来源网络,侵删)
参数
参数是让用户与报表进行交互的关键,它们允许用户筛选报表显示的数据。
-
如何添加参数:
- 在报表设计视图中,右键单击 "参数" 文件夹,选择 "添加参数"。
- 名称:
YearParam。 - 数据类型:
Integer。 - 提示:
请输入年份:。 - 可用值: 选择 "从查询中获取",选择你的数据集,然后从 "值" 字段中选择
YEAR(OrderDate)。 - 默认值: 选择 "从查询中获取",同样选择数据集和
YEAR(OrderDate)。
-
如何在查询中使用参数: 修改你的数据集查询,将
WHERE YEAR(OrderDate) = 2012改为:WHERE YEAR(OrderDate) = @YearParam
当预览报表时,系统会提示你选择一个年份,报表将根据你的选择显示数据。
表格、矩阵与列表
这是三种最基本的数据区域。
- 表格: 最常用的布局,类似于 Excel 表格,它有固定的列,行根据数据动态生成,非常适合显示明细数据。
- 矩阵: 类似于数据透视表,它基于行和列的分组进行聚合,非常适合进行交叉分析。
- 列表: 最自由的布局,它只是一个容器,你可以在里面放置表格、矩阵、图表等任何内容,非常适合创建格式化的文档,如发票或信件。
图表
图表是数据可视化的强大工具。
- 从 "工具箱" 中拖拽一个 "图表" 控件到报表设计区。
- 选择图表类型(如柱状图、饼图、折线图)。
- 将数据集中的字段拖放到图表的 "类别" 和 "数据" 区域。
- 将
OrderDate(按月份分组) 拖到 "类别",将TotalDue拖到 "数据",即可看到每月的销售总额趋势图。
分组与排序
- 分组: 在表格或矩阵中,右键单击行或列,选择 "添加组",这对于创建小计和总计至关重要,你可以按
SalesTerritory进行分组,然后计算每个地区的销售额小计。 - 排序: 右键单击表头,选择 "排序",可以基于某个字段(如
OrderDate升序)对整个表格进行排序。
表达式
表达式是 SSRS 的灵魂,它使用 VB.NET 语法来动态计算值、设置属性或控制内容。
-
如何使用表达式:
- 右键单击一个文本框,选择 "表达式..."。
- 在弹出的对话框中,你可以编写 VB.NET 代码。
- 或者,使用 "类别" 和 "项" 列表来快速构建表达式。
-
常用表达式示例:
- 格式化日期:
=Format(Fields!OrderDate.Value, "yyyy-MM-dd") - 格式化货币:
=FormatCurrency(Fields!TotalDue.Value, 2) - 条件文本:
=IIf(Fields!TotalDue.Value > 1000, "高价值订单", "普通订单") - 隐藏行: 在行的 "隐藏" 属性中设置表达式:
=IIsNothing(Fields!SomeField.Value)或=Fields!TotalDue.Value < 100
- 格式化日期:
高级主题
钻取报表
允许用户从汇总数据导航到更详细的子数据。
- 创建两个报表:一个主报表(显示汇总,如按年度销售额),一个明细报表(显示该年度的所有订单)。
- 在主报表中,为需要点击的元素(如一个文本框)设置 "操作" 属性。
- 在 "操作" 属性中,选择 "跳转到报表",然后选择你的明细报表。
- 在 "跳转到报表" 的参数部分,设置如何将主报表的值(如选中的年份)传递给明细报表的参数。
条件格式
根据数据值动态改变单元格的样式(如背景色、字体颜色)。
- 选中一个文本框。
- 在 "属性" 窗口中,找到 "填充" 属性。
- 点击
(fx)图标,打开表达式编辑器。 - 编写一个表达式来返回颜色名称或颜色代码。
=IIf(Fields!TotalDue.Value > 5000, "LightGreen", "White")
子报表
将一个报表嵌入到另一个报表中。
- 在主报表中,从工具箱拖拽一个 "子报表" 控件。
- 右键单击子报表,选择 "子报表属性"。
- 指定要嵌入的报表(.rdlc 文件)。
- 通过链接主报表和子报表的参数来传递数据。
报表部署与管理
报表部署后,可以在 报表管理器 中进行管理:
- 设置文件夹结构和安全权限(谁可以查看、谁可以管理)。
- 设置报表历史记录和快照。
- 配置订阅,让报表在特定时间或通过电子邮件自动发送给用户。
SSRS 工具生态
- SQL Server Data Tools (SSDT): 专业开发人员的首选,功能最强大。
- 报表生成器: 业务分析师和“公民开发者”的首选,无需编写代码,通过向导和拖拽即可创建报表。
- Power BI: 虽然是独立产品,但它可以连接到 SSRS 报表服务器,将 SSRS 报表嵌入到 Power BI 仪表板中,实现混合分析。
学习资源与最佳实践
最佳实践
- 使用共享数据源: 便于维护和修改连接信息。
- 参数化所有查询: 提高性能,避免检索不必要的数据。
- 合理使用缓存: 对于不经常变动的报表,启用缓存可以显著提高加载速度。
- 编写健壮的表达式: 使用
TryCast或IsNothing避免因空值导致的报表错误。 - 保持报表简洁: 一个报表只解决一个核心业务问题。
学习资源
- Microsoft 官方文档: SQL Server Reporting Services (SSRS) 文档 - 最权威、最全面的学习资料。
- SQL Server 教程: [SQL Server Reporting Services 教程](https://www.w3schools.com/sql/sql_server Reporting_services.asp) - 提供简化的入门示例。
- YouTube 视频教程: 搜索 "SSRS Tutorial for Beginners",有很多高质量的免费视频课程。
- 技术博客和社区: 关注 SQL Server 相关的技术专家博客(如 SQL Server Central, MSSQLTips)和 Stack Overflow 社区。
希望这份详细的教程能帮助你顺利入门并精通 SQL Server Reporting Services!
