SSRS Reporting Service 报表参数和数据集信息抽取

本文介绍了一种使用 T-SQL 脚本从 SQL Server Reporting Services 中提取报表定义文件内的数据集名称及其参数的方法。通过创建临时表并运用 XML 函数,此过程能够遍历所有报表的数据集,并获取其查询参数及命令文本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DECLARE @RetVal TABLE
  (
     REPORT_PATH VARCHAR(500),
     DATASETNAME VARCHAR(200)
  );

WITH XMLNAMESPACES(DEFAULT 'http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition')
--Extract all the Datasets of a report
INSERT INTO @RetVal
SELECT C.path                           AS REPORT_PATH,
       T2.DN.value('.', 'varchar(200)') AS DataSetName
FROM   dbo.Catalog c
       CROSS APPLY (SELECT CONVERT(XML, CONVERT(VARBINARY(max), c.content)) xmlCriteria) a
       CROSS APPLY A.xmlCriteria.nodes('//DataSets/DataSet/@Name') AS T2(DN)
WHERE C.Type=2 --type 2 RDL
DECLARE @REPORT_PATH VARCHAR(200)
DECLARE @DataSetName VARCHAR(200)
DECLARE DataSets CURSOR FOR
  SELECT *   FROM   @RetVal

OPEN DataSets

FETCH NEXT FROM DataSets INTO @REPORT_PATH, @DataSetName

WHILE @@FETCH_STATUS = 0
  BEGIN
      PRINT @DataSetName;

      DECLARE @A VARCHAR(10)='';

      --Extract all the parameters of the report Datasets
      WITH XMLNAMESPACES(DEFAULT 'http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition')
      SELECT @REPORT_PATH                     AS Report_Path,
             @DataSetName                     AS Dataset,
             T3.QP.value('.', 'varchar(200)') AS Dataset_Parameter,
             T4.CT.value('.', 'varchar(200)') AS Command_Text
      FROM   dbo.Catalog c
             CROSS APPLY (SELECT CONVERT(XML, CONVERT(VARBINARY(max), c.content)) xmlCriteria) a
             CROSS APPLY A.xmlCriteria.nodes('//DataSets/DataSet[@Name=sql:variable("@DataSetName")]/Query/QueryParameters/QueryParameter/@Name')AS T3(QP)
             CROSS APPLY A.xmlCriteria.nodes('//DataSets/DataSet[@Name=sql:variable("@DataSetName")]/Query/CommandText')AS T4(CT)
      WHERE  C.path = @REPORT_PATH

      FETCH NEXT FROM DataSets INTO @REPORT_PATH, @DataSetName
  END

CLOSE DataSets

DEALLOCATE DataSets 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值