我在一台服务器上安装了带有 SSRS 的 SQL Server 2008,在新服务器上安装了带有 SSRS 的 SQL Server 2008 R2。我想使用 SSRS Web 服务 API 将 200 多个报告以及一些共享计划和几个数据源从第一台服务器迁移到第二台服务器。为简单起见,因为只有几个共享数据源,我继续使用 Report Manager 界面创建了这些数据源。
不幸的是,在我之前的人在每个报告中都嵌入了数据源信息(连接字符串、登录名、密码等)。我认为这是将这些更改为指向共享数据源的好时机,这样就不必为每个报告一个一个地执行此操作。我可以使用 CreateCatalogItem 在新服务器上创建报告,但我似乎无法确定如何正确地从嵌入式数据源更改为共享数据源。
到目前为止,我已经尝试了两个 SetItemReferences:
itemRef.Reference = "/Data Sources/TMS";
itemRef.Name = "TMS";
itemRef.Reference = "/Data Sources/TMS";
rs2010.SetItemReferences(catItem.Path, new ReportService2010.ItemReference[] { itemRef });
和 SetItemDataSources:
ReportService2010.DataSourceReference dataSourceRef = new ReportService2010.DataSourceReference();
dataSourceRef.Reference = "/Data Sources/TMS";
ReportService2010.DataSource dataSource = new ReportService2010.DataSource();
dataSource.Name = "TMS";
dataSource.Item = dataSourceRef;
rs2010.SetItemDataSources(catItem.Path, new ReportService2010.DataSource[] { dataSource });
这两种方法在尝试使用嵌入数据源的报表时都会导致“NotFoundException”,但它们都可以在已经指向共享数据源的报表上正常工作。
此外,我在 Google 和 StackOverflow 上都搜索了解决方案,但一无所获。谁能在这里指出我正确的方向?