2016-02-25 11 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服務。