web-dev-qa-db-ja.com

すべてのSSRSレポートをダウンロードする

1つのサーバーですべての.rdlファイルのコピーを取得したい。一度に1つのレポートを手動でダウンロードできますが、特にこのサーバーには約1500個のレポートがあるため、時間がかかります。

すべての.rdlファイルをダウンロードしてそれらのコピーを取得できるようにする方法またはツールはありますか?

11
asmgx

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
29
CPorteous

バックアップ目的などでこれが必要な場合は、これが便利です。 公開されたRDLファイルはどこにありますか?

そのスレッドからの関連クエリは次のとおりです。

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

元の答えは2005を使用していたが、2016年に使用したので、2008年と2012年に機能するはずです。

これを使用しなければならなかったとき、クエリへのパスも追加したため、どのレポートがどのレポートであるかがわかりました。

1
C Black

これはSQL2016/SSRS2016に基づいていますが、2012年でも機能するはずです。

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

これにより、各レポートに1つずつ、URLのリストが表示されます。

上記がSSRS 2012で機能しなかった場合は、レポートマネージャーに移動して、そこからファイルをダウンロードするかのように実行します。ダウンロードボタンのURLを確認すると、おそらくURLとアイテムIDが埋め込まれています。そのURL構造に一致するように上記のコードを調整するだけです。

この後、あなたがどうするかはあなた次第です。個人的には、Chrome「Tab Save」という拡張機能をChrome store here で使用できます。単にコピーして貼り付けることができます。上記で作成したすべてのURLを入力して、ダウンロードボタンをクリックします...

1
Alan Schofield