如何查看 Reportserver 上的报表参数?
How can I see the Parameters of Reports on Reportserver?
我了解到所有来自 SSRS 的报告都作为 RDL(报告定义)存储在 Reportserver 数据库中。
问题:如何在该数据库中查看报表的所有创建参数?我想查找具有特定参数的报告。
我已经检查了 Reportserver 数据库,但我没有找到任何 table 具有特定报告和使用的参数。
参数列在 Catalog
table 的 Parameter
列中 (ReportServer.dbo.Catalog
)
参数存储为XML,因此您无法直接读取它们。
以下代码将 return 报告参数名称、参数标签及其数据类型。
SELECT
Cat.ItemID, cat.[Path], cat.Name
, p.*
FROM ReportServer.dbo.Catalog cat
JOIN (
SELECT ReportID = ItemID
,ParameterName = params.value('(Name/text())[1]', 'varchar(100)')
,Prompt = params.value('(Prompt/text())[1]', 'nvarchar(100)')
,DataType = params.value('(Type/text())[1]', 'varchar(100)')
FROM (
SELECT C.ItemID, C.Name,CONVERT(XML,C.Parameter) AS ParameterXML
FROM ReportServer.dbo.Catalog C
WHERE C.Content is not null
AND C.Type = 2
) a
cross apply ParameterXML.nodes('//Parameters/Parameter') q (params)
) p
on cat.ItemID = p.ReportID
我了解到所有来自 SSRS 的报告都作为 RDL(报告定义)存储在 Reportserver 数据库中。
问题:如何在该数据库中查看报表的所有创建参数?我想查找具有特定参数的报告。
我已经检查了 Reportserver 数据库,但我没有找到任何 table 具有特定报告和使用的参数。
参数列在 Catalog
table 的 Parameter
列中 (ReportServer.dbo.Catalog
)
参数存储为XML,因此您无法直接读取它们。
以下代码将 return 报告参数名称、参数标签及其数据类型。
SELECT
Cat.ItemID, cat.[Path], cat.Name
, p.*
FROM ReportServer.dbo.Catalog cat
JOIN (
SELECT ReportID = ItemID
,ParameterName = params.value('(Name/text())[1]', 'varchar(100)')
,Prompt = params.value('(Prompt/text())[1]', 'nvarchar(100)')
,DataType = params.value('(Type/text())[1]', 'varchar(100)')
FROM (
SELECT C.ItemID, C.Name,CONVERT(XML,C.Parameter) AS ParameterXML
FROM ReportServer.dbo.Catalog C
WHERE C.Content is not null
AND C.Type = 2
) a
cross apply ParameterXML.nodes('//Parameters/Parameter') q (params)
) p
on cat.ItemID = p.ReportID