如何在C#代码中向RDL添加嵌入式数据源?

时间:2013-05-03 22:46:46

标签: reporting-services ssrs-2008 rdl

我正在尝试在多租户情况下使用SSRS。我们想要支持的基本版本是SQL Server 2008,但如果需要R2,我们可能会对此感到满意。

我目前正在使用ReportingService2005.asmx端点,它似乎公开了ReportService2005SoapClient类(即使所有示例似乎都显示了ReportingService2005类)。

当我们运行报告时,我想从服务器复制该报告,添加嵌入式数据源,将数据集指向该数据源,然后运行报告。

我已经达到了:

  1. 从服务器获取RDL

  2. 修改XML以添加DataSource

  3. 将数据集指向新数据源

  4. ...但是当我尝试“CreateReport”时,我收到以下错误:

      

    System.Web.Services.Protocols.SoapException:数据集'DataSet1'指的是数据源“mydatasource_LOCAL”,它不存在。
         在Microsoft.ReportingServices.Library.ReportingService2005Impl.ExecuteBatch(Guid batchId)
         在Microsoft.ReportingServices.WebServer.ReportingService2005.ExecuteBatch()

    我已将数据集添加到RDL,它看起来与在设计器中添加数据集时相同。但是,我假设需要将某些内容添加到服务器中?我错过了什么?

    (顺便说一句,我知道MS Dynamics在单个实例中启用了多租户SSRS,但我看不到他们是如何做到这一点的信息。如果他们有任何代码或任何他们共享的人可能会指向我那将是真棒。)

1 个答案:

答案 0 :(得分:1)

您正在使用正确的端点,或多或少。来自MSDN

  

SQL Server 2008 R2中不推荐使用ReportService2005ReportService2006个端点。 ReportService2010端点包括两个端点的功能,并包含其他管理功能。

在任何情况下,您都提到修改RDL以在步骤2中使用新数据源。我可能错了,但我认为您可能仍需要使用以下内容将DataSource项添加到报表目录中ReportingService2010 CreateDataSource(...)方法。

如果从Visual Studio将新报表部署到报表服务器,它还会在日志中提及它在部署报表之前部署数据源。

当然,您也可以使用报表管理器预先在服务器上创建该数据源(尽管“mydatasource_LOCAL”可能不是理想的名称)。