我正在尝试在多租户情况下使用SSRS。我们想要支持的基本版本是SQL Server 2008,但如果需要R2,我们可能会对此感到满意。
我目前正在使用ReportingService2005.asmx端点,它似乎公开了ReportService2005SoapClient类(即使所有示例似乎都显示了ReportingService2005类)。
当我们运行报告时,我想从服务器复制该报告,添加嵌入式数据源,将数据集指向该数据源,然后运行报告。
我已经达到了:
从服务器获取RDL
修改XML以添加DataSource
将数据集指向新数据源
...但是当我尝试“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,但我看不到他们是如何做到这一点的信息。如果他们有任何代码或任何他们共享的人可能会指向我那将是真棒。)
答案 0 :(得分:1)
您正在使用正确的端点,或多或少。来自MSDN:
SQL Server 2008 R2中不推荐使用ReportService2005和ReportService2006个端点。 ReportService2010端点包括两个端点的功能,并包含其他管理功能。
在任何情况下,您都提到修改RDL以在步骤2中使用新数据源。我可能错了,但我认为您可能仍需要使用以下内容将DataSource项添加到报表目录中ReportingService2010 CreateDataSource(...)
方法。
如果从Visual Studio将新报表部署到报表服务器,它还会在日志中提及它在部署报表之前部署数据源。
当然,您也可以使用报表管理器预先在服务器上创建该数据源(尽管“mydatasource_LOCAL”可能不是理想的名称)。