我正在努力建立一个'宇宙',我和我的同事可以看到以下内容:
REPORTNAME - DATASET(S) - DATASOURCE
对于每个我想知道的细节:
REPORTNAME - which parameters? what kind? caching enabled?
DATASET - underlying Query, resulting Columns
DATASOURCE - COnnectionstring
获取报告列表(通过Reportserver数据库查询)
获取数据源的详细信息(使用rs.exe对webservice执行脚本)
但我在哪里可以找到有关数据集的信息?我在reportserver数据库的表/视图中找不到任何内容,也无法在webservice文档中找到有关数据集的任何信息。谁能指出我正确的方向?
谢谢, henro
答案 0 :(得分:3)
您无法在报表服务器数据库中找到有关数据集的任何信息这一事实让我认为您正在寻找有关报表内(本地)数据集的信息。如果您正在处理共享数据集,那么当您查看Catalog (type = 8) and DataSets tables时,您就会找到它们。
报表(本地)数据集详细信息包含在/ Report / DataSets / DataSet / Query下的报表定义(RDL XML)中。
您可以从报表服务器数据库中查询本地数据集信息,使用XML数据类型的函数将每个数据集的详细信息转换为自己的结果集行:
SELECT ReportItemID = ItemID, DataSetName = QueryXml.value('@Name', 'NVARCHAR(256)'), DataSourceName = QueryXml.value('(*:Query/*:DataSourceName)[1]', 'NVARCHAR(260)'), CommandType = QueryXml.value('(*:Query/*:CommandType)[1]', 'NVARCHAR(15)'), CommandText = QueryXml.value('(*:Query/*:CommandText)[1]', 'NVARCHAR(MAX)') FROM ( SELECT *, ContentXml = (CONVERT(XML, CONVERT(VARBINARY(MAX), Content))) FROM Catalog WHERE Type = 2 ) AS Data CROSS APPLY ContentXml.nodes('/*:Report/*:DataSets/*:DataSet') QueryData(QueryXml)
当您使用它时,您可以从报表服务器数据库中查询all the details needed 报表,无需使用报表服务器Web服务/ rs.exe (披露:链接是到我博客上的一篇文章)。