如何以编程方式阅读SQL Server报告历史记录?

时间:2009-04-28 00:34:39

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

SQL Reporting Services问题 - 适用于SQL Server 2008。

鉴于SQL Server Reporting Services具有可用于安排SQL Reports运行的调度程序,是否有人知道以编程方式(通过C#)从报表服务器读取报表的历史记录(然后可能检索结果报告)?

因此,在进行了一些挖掘之后,看起来我需要为Report Server生成WSDL,然后使用ReportingService对象访问信息 - 有没有人在之前(使用2008)完成此操作并且可以提供一些指示?

注意:看起来(根据SQL 2008在线书籍)SQL 2008的WSDL地址是:

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

如果我可以使用它,我会发布一个实现它的基本步骤的答案:)这有点令人困惑,因为文档是SQL 2000和SQL 2005引用的混合!

2 个答案:

答案 0 :(得分:2)

好的,所以我实际上已经想出如何完成这个看似不可能完成的任务。

在开始之前,我要说的是,如果您正在使用SQL Server Reporting Services 2008(SSRS 08)并且(即您别无选择)使用Basic auth之类的东西,那么只会通过基于WCF的Service Stubs& amp;找到一个受伤的世界。 IIS。我稍后将在博客上发布关于配置的文章。

简短回答如下:

  • 连接(例如,新的ReportingService2005()或ReportingService2005SoapClient())

注意:使用旧的(pre-WCF)ASMX服务更容易,但使用新的CF版本并非不可能。身份验证需要一些配置。版本之间也有一些轻微的语法变化。

  • 查找您要查找的报告历史记录,例如ReportHistorySnapshot [] history = reportServer.ListReportHistory(@“/ Reports / MyHandyReport”);
  • 从您想要的任何快照(从ListHistoryReport返回)获取HistoryID
  • 现在,使用ReportViewer呈现历史报告,就像其他任何报告一样,例如:

    ReportViewer rv = new 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.Render(“Excel”,null,out mimeType,out encoding,out extension,out streamids,out warnings);

注意:您还可以使用第二个WCF Web服务(ReportExecution2005.asmx?wsdl)以及报告执行

答案 1 :(得分:1)

它有soap和可扩展性API,也许可以使用它们?