2017-10-17 232 views
0

我想在一臺服務器上獲得所有.rdl文件的副本。 我可以手動執行一次下載的報告,但這非常耗時,尤其是這臺服務器有大約1500份報告。下載所有SSRS報告

是否有任何方式或任何工具,允許我下載所有的.rdl文件,並採取它們的副本?

回答

0

這是基於SQL2016/SSRS2016,但我認爲它應該在2012年

SELECT 'http://mySQLServerName/reports/api/v1.0/catalogitems(' + cast(itemid as varchar(256))+ ')/Content/$value' AS url 
    FROM ReportServer.dbo.Catalog 

工作這會給你的URL列表,每個報告。

如果上述內容在SSRS 2012中不起作用,那麼請轉至報告管理器並執行操作,就好像您要從此處下載文件一樣。檢查下載按鈕上的網址,您可能會看到一個URL,其中嵌入了項目ID。只需調整上面的代碼以匹配那個url結構。

你做什麼之後,這取決於你。 個人而言,我會使用Chrome商店here中提供的名爲「Tab Save」的Chrome擴展程序。你可以簡單地複製和粘貼在上面創建的所有URL的進去,打的下載按鈕...

0

如果你只是需要這個備份的目的或類似的東西,這可能是有用的:Where does a published RDL file sit?

相關查詢從該線程是:

select convert(varchar(max), convert(varbinary(max), content)) 
from catalog 
where content is not null 

原來答案是使用2005年,我已經用它在2016年,所以我想它應該在2008年和2012年

工作時,我不得不用這個,我在查詢的路徑中添加了y,以便我知道哪個報告是哪個。

3

還有就是要做到這一點使用PowerShell的完整&簡單的方法。

此代碼將導出與報表服務器完全相同結構的所有報表內容。看看Github wiki其他選項&命令

#------------------------------------------------------ 
#Prerequisites 
#Install-Module -Name ReportingServicesTools 
#------------------------------------------------------ 

#Lets get security on all folders in a single instance 
#------------------------------------------------------ 
#Declare SSRS URI 
$sourceRsUri = 'http://ReportServerURL/ReportServer/ReportService2010.asmx?wsdl' 

#Declare Proxy so we dont need to connect with every command 
$proxy = New-RsWebServiceProxy -ReportServerUri $sourceRsUri 

#Output ALL Catalog items to file system 
Out-RsFolderContent -Proxy $proxy -RsFolder/-Destination 'C:\SSRS_Out' -Recurse