2017-10-17 131 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