2009-04-28 73 views
4

SQL Reporting Services問題 - 對於SQL Server 2008.如何以編程方式讀取SQL Server報告歷史記錄?

鑑於SQL Server Reporting Services具有可用於計劃SQL Reports運行的計劃程序,有沒有人知道以編程方式(通過C#)讀取報告服務器報告的歷史記錄(然後可能檢索報告的結果)?

因此,經過一些更深入的挖掘,看起來我需要爲報表服務器生成WSDL,然後通過使用ReportingService對象訪問信息 - 任何人都可以在2008年之前完成此操作,並且可以提供一些指針?

注:看起來像(根據SQL在線圖書2008)的WSDL地址2008 SQL是:

http://server/reportserver/ReportService2005.asmx?wsdl 

如果我能得到這個工作,我會後回答了基本步驟實現它:)這有點令人困惑,因爲文檔是SQL 2000和SQL 2005引用的混合體!

+0

+1我根本不知道這是甚至有可能。 – Sung 2009-04-28 03:01:50

回答

2

好吧,我已經想出瞭如何完成這個似乎不可能完成的任務。

在開始之前,我只想說如果您正在使用SQL Server Reporting Services 2008(SSRS 08)和擁有(即您別無選擇)使用基本身份驗證之類的東西,那麼您只會發現一個受WCF服務存根& IIS傷害的世界。我將在稍後介紹有關配置的博客。

簡短的回答如下:

  • 連接(例如,新ReportingService2005()或ReportingService2005SoapClient())

注:它更容易使用舊的(預WCF)ASMX服務,但並非不可能使用新的CF版本。身份驗證需要一些配置。版本之間也有一些輕微的語法變化。

  • 查找您正在查找的報告歷史,例如, ReportHistorySnapshot [] history = reportServer.ListReportHistory(@「/ Reports/MyHandyReport」);
  • 獲取HistoryID從哪個快照你想(從ListHistoryReport返回)現在
  • ,使用的ReportViewer呈現歷史報告,就如您在任何其他報告,如:

    的ReportViewer RV =新的ReportViewer();
    rv.ProcessingMode = ProcessingMode.Remote;
    rv.ServerReport.ReportServerUrl = new Uri(@「http://localhost/reportserver」);
    rv.ServerReport.ReportPath = @「/ Reports/MyHandyReport」;
    rv.ServerReport.HistoryId = historyId;
    //...snip
    byte [] bytes = rv.ServerReport。渲染(「Excel」,null,out mimeType,out編碼,out擴展,out streamids,out警告);

注意:您還可以使用第二WCF Web服務(WSDL ReportExecution2005.asmx?),以及用於報表執行

1

那麼它有soap和可擴展性的API,也許他們可以使用?

+0

是的,我實際上是在這條路上:)看起來不像2005年和2008年之間發生了變化 – RobS 2009-04-28 01:03:02

相關問題