Management Studio 中的自定义报表
适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
Analytics 平台系统(PDW)
在 SQL Server Management Studio 中,许多对象资源管理器节点显示一组由Microsoft创建的标准报表。 这些报告汇总了通常请求的服务器信息。 从 SQL Server 2005 (9.x) Service Pack 2 开始,管理员可以从 Management Studio 运行在 SQL Server Data Tools (SSDT)中创建的自定义报表。
实施
自定义报表存储为报表定义(.rdl)文件,并使用报表定义语言(RDL)创建。 RDL 包含 XML 格式的报表的数据检索和布局信息。 RDL 是一个开放架构。 开发人员可以使用其他属性和元素扩展 RDL。 报表可以在报表中执行任何有效的 Transact-SQL 语句。
如果对象资源管理器连接到服务器,当报表引用该节点的报表参数时,自定义报表可以在对象资源管理器当前选择的上下文中执行。 这使报表能够使用当前上下文,例如当前数据库;或一致的上下文,例如将指定数据库指定为自定义报表中包含的 Transact-SQL 语句的一部分。
运行自定义报表
可以通过以下方式在 Management Studio 中运行自定义报表:
在对象资源管理器中右键单击某个节点,指向 报表,然后单击左键 自定义报表。 在“打开文件 对话框中,找到包含 .rdl 文件的文件夹,然后打开相应的报表文件。
右键单击对象资源管理器中的节点,指向 报表,指向 自定义报表,然后从最近使用的文件列表中选择自定义报表。
局限性
使用自定义报表时,请考虑以下限制:
为了防止意外执行恶意代码,无法将 Management Studio 配置为自动运行报表,即使文件系统配置为将 .rdl 文件与 Management Studio 相关联。 报表无法在 Management Studio 中以编程方式执行,并且无法通过 Management Studio 从命令行运行。
可以在不生成预期值的上下文中运行自定义报表。 例如,可以在复制中未涉及的数据库上下文中运行有关复制的报表,或者以无权访问生成准确报表所需的信息的用户身份运行报表。 自定义报表的创建者负责报表结构及其上下文的有效性。
不能将自定义报表添加到标准报表列表中。
报表处理的代码可能会影响服务器性能。
自定义报表不支持子报表。
不能通过表达式定义报表中每个查询的命令文本。
命令(query)中使用的任何查询参数只能引用单个报表参数,并且不能使用任何表达式运算符。
报表命令(查询)仅支持文本和存储过程命令类型。
报表框架不为查询提供任何参数转义。 查询作者必须确保其查询不受 SQL 注入攻击。
管理自定义报表
我们建议拥有许多自定义报表的用户使用具有适当 NTFS 文件系统权限的文件系统文件夹来进行组织。
权限
使用当前用户的权限运行的自定义报表。 若要防止恶意用户更改报表运行的查询,应将包含报表文件的文件系统文件夹的权限设置为限制访问。
SQL Server 服务所使用的用户和帐户都需要对包含报表文件的文件系统文件夹进行读取访问。
任何有效的 .NET Framework 命令都可以嵌入到报表中,但不会执行该命令。
谨慎
任何有效的 Transact-SQL 语句都可以嵌入并从报表中执行。 在高特权用户帐户下运行报表可以执行这些嵌入指令中的任何一个,而无需质询。
另请参阅
向 Management Studio 添加自定义报表
取消隐藏运行自定义报告警告
将自定义报表用于对象资源管理器节点属性