【问题标题】:What's the "cheapest" way to check if a report exists on my Reporting Server?检查报告服务器上是否存在报告的“最便宜”的方法是什么?
【发布时间】:2013-11-07 22:21:39
【问题描述】:

对于 SQL Server 2008 Reporting Services 安装,检查给定报告(由报告名称 + 报告路径给出,例如 /MyReports/SomeOddballReport)是否存在(或不存在)的“最便宜”方法是什么?

我在 ReportServer Web 服务上看到了很多潜在的候选人 - 哪个最快,哪个使用最少的系统资源??

  • FindItems()
  • GetReportDefinition()
  • GetReportLink()
  • GetProperties()

还有其他我想念的吗?感谢您的任何提示和指示!我发现 Reporting Services webservice 接口缺少文档和示例,真的......

【问题讨论】:

    标签: reporting-services ssrs-2008


    【解决方案1】:

    似乎最快的方法是使用FindItems method

    所有其他选项似乎都与元数据相关,因为它们检索该项目的属性(因此它需要首先找到项目,然后获取这些元数据)

    【讨论】:

      【解决方案2】:

      由于在 MS SQL 上运行 MS Reporting Services,您可以轻松选择返回报告名称并查看报告是否存在。 SQL Server 内部有一个名为 ReportServer 的数据库。该数据库中有一个名为 Catalog 的表。目录表存储数据源、报告和其他一些重要信息。关键字段是“名称”和“类型”。类型区分报表/数据源/等。名称当然很明显,就是报表的名称。

      要获取有关您的报告服务实例的所有报告,请尝试以下操作:

      USE ReportServer
      GO
      SELECT Name, Description FROM Catalog WHERE Type=2
      

      获取所有数据源:

      USE ReportServer
      Go
      SELECT Name, Description FROM Catalog WHERE Type=5
      

      因此,如果您有名字或至少知道报告以什么开头,则可以进行 LIKE 查询:

      SELECT Name FROM Catalog WHERE Name LIKE '%Employee Report%'
      

      查看我的博客了解更多信息:

      http://weblogs.sqlteam.com/jhermiz/archive/2007/08/14/60285.aspx

      另外,既然你提到了它,那么它是一个路径字段,它可能包含这样的数据:

      /ETime/部门工时汇总

      【讨论】:

      • +1 好点!我将不得不对此进行更多调查 - 感谢您的提示!
      • @JonH,我用来做 Sharepoint 编程,微软建议不要直接访问它的数据库;是否有针对 Reporting Server 的类似建议?
      • @Rubens - MS 不建议使用该门户,因为配置数据库的数量导致门户非常敏感。 ReportServer 数据库并不像 Sharepoint 那样复杂,事实上与它相比,Sharepoint 简直就是一头野兽!这篇文章的创始人想要一种简单有效的方法来提取报告名称,没有提到插入或删除。除非您知道自己在做什么,否则我会厌倦删除。
      • 我只会在最绝望的情况下这样做:/
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-09
      • 2017-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多