0

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

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

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

我已经做到了:

  1. 从服务器获取 RDL

  2. 修改 XML 以添加 DataSource

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

...但是当我尝试“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,但我没有看到有关他们如何做到这一点的信息。如果他们有任何代码或他们共享的任何东西,有人可以指出我会很棒。)

4

1 回答 1

1

您或多或少地使用了正确的端点。来自MSDN

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

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

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

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

于 2013-05-06T22:13:06.613 回答