2009-12-02 50 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

所有其他選項似乎是相關的元數據,因爲他們的項目檢索屬性(所以它需要先找到項目和,因此,獲得這些元數據)