【问题标题】:How to find out All tables names & columns list use by SSRS Report如何找出 SSRS 报告使用的所有表名和列列表
【发布时间】:2018-04-13 19:14:42
【问题描述】:

我有 600 个 SSRS 报告部署到生产环境中。如何获取报表的元数据信息?诸如哪些报告使用哪些表格之类的事情。如果任何报告使用超过 1 个表格,我会尝试获取报告使用的所有表格。

是否有可能获得此类信息?请帮帮我

【问题讨论】:

标签: reporting-services sql-server-2012 ssrs-2008 ssrs-2012


【解决方案1】:

我必须将 'http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition' 位更改为您的 SSRS 所在的适当年份,否则您会得到 0 行结果。

-- https://social.msdn.microsoft.com/Forums/sqlserver/en-US/0cbb8997-c54c-4de8-87e8-529dc6e2b017/extract-metadata-from-report-server-database?forum=sqlreportingservices

WITH XMLNAMESPACES ( DEFAULT 'http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition', 'http://schemas.microsoft.com/SQLServer/reporting/reportdesigner' AS rd )
SELECT ReportName  = name
    ,DataSetName  = x.value('(@Name)[1]', 'VARCHAR(250)') 
   ,DataSourceName = x.value('(Query/DataSourceName)[1]','VARCHAR(250)')
   ,CommandText  = x.value('(Query/CommandText)[1]','VARCHAR(250)')
   ,Fields   = df.value('(@Name)[1]','VARCHAR(250)')
   ,DataField  = df.value('(DataField)[1]','VARCHAR(250)')
   ,DataType  = df.value('(rd:TypeName)[1]','VARCHAR(250)')
   --,ConnectionString = x.value('(ConnectionProperties/ConnectString)[1]','VARCHAR(250)')
 FROM ( SELECT C.Name,CONVERT(XML,CONVERT(VARBINARY(MAX),C.Content)) AS reportXML
      FROM ReportServer.dbo.Catalog C
     WHERE C.Content is not null
      AND C.Type = 2
   ) a
 CROSS APPLY reportXML.nodes('/Report/DataSets/DataSet') r ( x )
 CROSS APPLY x.nodes('Fields/Field') f(df) 
ORDER BY name

【讨论】:

  • 链接坏了还需要解释答案
  • 您好 v8-E 我已经编辑了帖子,但请注意第一个“链接”不应该是链接,它实际上是一个 XML 模式引用。希望这会有所帮助
【解决方案2】:

您可以操作 ReportServer.dbo.Catalog 中的数据以提取每个 RDL 的 XML。然后,如果您的所有表都以模式名称开头,您可能可以对 XML(或 XML 中的数据集查询)执行正则表达式以提取表名。它很可能会很混乱。如果您不使用由两部分或三部分组成的表名(Database.schema.table 或 schema.table),则可能很难编写正则表达式。也许有一个工具可以从原始查询中提取表名?在这种情况下,您可以毫不费力地从 Catalog 表中提取查询。

现在在移动设备上,但如果您认为有帮助,我可以提供 Catalog 表提取查询(我在生产中使用它来搜索表名……而不是提取所有表名)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 2014-05-25
    相关资源
    最近更新 更多