2016-02-25 12 views
2

道歉,因为这是我的第一个stackoverflow问题。如何使用PowerShell更改RDL中的共享数据集路径

我想要做的是编辑RDL中共享数据集的位置。 也就是说,我正在使用powershell将报告从本地硬盘部署到报告服务器。不幸的是,其中一些报告使用共享数据集,而RDL引用的位置与共享数据集的实际位置不同。尽管共享数据集名称相同。

那么,有没有办法在上传这些报表时,我可以循环浏览它们并更改共享数据集引用,以便它指向实际位置?例如,现在RDL将共享数据集引用为“Employee”,但我想使用PowerShell将其更改为/ IT/Sales/Datasets/Employee。非常感谢你提前。

回答

0

我在研究同样的事情时发现了这个问题。它仍然没有得到回答所以...

您可以使用使用ReportingService2010网络服务为此,您可以使用New-WebServiceProxy创建。请注意0​​参数,因为您需要实例化其他对象并会遇到this问题。

它的要点是:

$dataSources = $proxy.GetItemDataSources("/path/to/report") 
$dsRef = New-Object -TypeName ($proxy.GetType().Namespace + ".DataSourceReference") 
$dsRef.Reference = "/path/to/datasource" 
$dataSources[0].Item = $dsRef 
$proxy.SetItemDataSources("/path/to/report", $datasources) 

你可能会想提供从数据源名称映射到服务器的路径,然后查找基于$dataSources[0].Name参考。或者,您可以询问报告XML以查找正在使用的数据源并构建新的对象,而不是查询现有的对象。

我已经假定SSRS 2008 R2或更高版本 - 如果这是2005年的版本,则需要修改它以使用ReportingService2005 Web服务。