2013-05-03 33 views
0

我正尝试在多租户情况下使用SSRS。我们想要支持的基本版本是SQL Server 2008,但是如果需要R2,我们可能会确定。如何将嵌入式数据源添加到C#代码中的RDL中?

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

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

据我得到的:

  1. 从服务器

  2. 获得RDL修改XML以添加数据源

  3. 指向的数据集,以指向新的数据源

...但是当我尝试“Crea teReport”我得到以下错误:

System.Web.Services.Protocols.SoapException: The dataset ‘DataSet1’ refers to the data source “mydatasource_LOCAL”, which does not exist.
at Microsoft.ReportingServices.Library.ReportingService2005Impl.ExecuteBatch(Guid batchId)
at Microsoft.ReportingServices.WebServer.ReportingService2005.ExecuteBatch()

我已经添加数据集到RDL,它的外观一样,当我在设计中添加一个。但是,我认为需要将某些内容添加到服务器中?我错过了什么? (作为一个例外,我知道MS Dynamics在单一实例中启用了多租户SSRS,但我没有看到他们如何做到这一点的信息,如果他们有任何代码或任何他们共享某人可能会指向我太棒了。)

回答

1

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

The ReportService2005 and ReportService2006 endpoints are deprecated in SQL Server 2008 R2. The ReportService2010 endpoint includes the functionalities of both endpoints and contains additional management features.

在任何情况下,你提到你修改RDL使用在步骤2中的新数据源我可能是错的,但我想你也许还需要一个DataSource项目添加到您的报告目录使用ReportingService2010CreateDataSource(...)方法。

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

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

+0

当我在报表中使用嵌入式数据源时,我没有看到它部署数据源,只有当我创建共享数据源时。我会仔细检查确定。 (是的,使用该端点是因为我们需要支持SQL Server 2008及更高版本)。 – PilotBob 2013-05-07 21:25:56

+0

它在我部署报表时在数据源在报表管理器数据库中创建时显示。它有一个与报告相匹配的项目ID。但是,如何获取我无法创建的报告的itemid以创建已创建的源? – PilotBob 2013-05-08 18:29:23

+0

似乎我不必修改RDL。只需克隆该报告,然后使用为该报告创建嵌入式数据源的SetItemDataSources。 – PilotBob 2013-05-08 20:23:23

相关问题