2009-12-02 52 views
1

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

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

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

任何人我失踪?感谢任何提示和指针!我发现Reporting Services的webservice接口缺少文档和示例,真的......

回答

1

由于MS报表服务于MS SQL你运行有一个简单的选项可以返回报告名称并查看报告是否存在。 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 

所以,如果你有什么报告的名称或至少知道更多信息

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

看看我的博客:你开始可以做一个LIKE查询

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

而且既然你提到它therte是可能包含数据这样的路径字段:

/ETIME /工作总结小时按部门

+0

+1点好!我将不得不调查一下 - 感谢提示! – 2009-12-02 13:44:01

+0

@JonH,我用来做Sharepoint编程,微软推荐不直接访问它的数据库;有没有像这样的报告服务器的建议? – 2009-12-02 13:57:40

+0

@Rubens - MS不推荐使用门户,因为门户对配置数据库的数量有多敏感。 ReportServer数据库并不像Sharepoint那么复杂,实际上,与它相比,Sharepoint只是一个野兽!这篇文章的创始人想要一种简单有效的方式来提取报告名称,但并未提及插入或删除操作。除非你知道你在做什么,否则我会厌倦删除。 – JonH 2009-12-02 14:13:47

2

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

所有其他选项似乎是相关的元数据,因为他们的项目检索属性(所以它需要先找到项目和,因此,获得这些元数据)