sql-server - 如何以编程方式读取 SQL Server 报表历史记录?

标签 sql-server reporting-services ssrs-2008

SQL Reporting Services 问题 - 针对 SQL Server 2008。

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

因此,经过更多挖掘后,看起来我需要为报表服务器生成 WSDL,然后使用 ReportingService 对象访问信息 - 以前有人这样做过(2008 年)并且可以提供一些指导吗?

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

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

如果我能让这个工作正常,我将发布一个答案,其中包含实现它的基本步骤:) 这有点令人困惑,因为文档混合了 SQL 2000 和 SQL 2005 引用资料!

最佳答案

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

在开始之前,我想说的是,如果您正在使用 SQL Server Reporting Services 2008 (SSRS 08) 并且必须(即您别无选择)使用诸如基本身份验证之类的功能,那么您使用基于 WCF 的服务 stub 和 IIS 只会发现一个充满伤害的世界。稍后我将在博客中介绍配置。

简短的回答如下:

  • 连接(例如 new ReportingService2005() 或 ReportingService2005SoapClient())

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

  • 找到您要查找的报告历史记录,例如ReportHistorySnapshot[] 历史 = reportServer.ListReportHistory(@"/Reports/MyHandyReport");
  • 从您想要的任何快照中获取 HistoryID(从 ListHistoryReport 返回)
  • 现在,使用 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;
    //...剪
    byte[] bytes = rv.ServerReport.Render("Excel", null, out mimeType, out 编码, out 扩展名, out streamids, out warnings);

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

关于sql-server - 如何以编程方式读取 SQL Server 报表历史记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/795804/

相关文章:

sql-server - 存储过程比对数据库使用 LINQ 更安全吗?

reporting-services - SSRS 2012 : Cannot add multi value parameter '?' for dataset XYZ because it is not supported by the data extension

sql - 如何将使用动态 SQL 的存储过程转换为非动态 SQL (SSRS)?

sql-server-2008 - 从网页创建 SSRS 订阅

reporting-services - 无法在 VS2013 中预览 SSRS 报告?

ssrs-2008 - 带日期轴的 SSRS 图表

SQL Server : procedure call, 内联串联不可能吗?

asp.net - 在 ASP.NET 中显示 SQL Server 数据库中的图像的最佳方式是什么?

sql - 仅返回该值出现超过 n 次的行

c# - ReportViewer - 以编程方式将报告导出到特定位置,而不显示保存对话框