How To:Reporting Services のレポートをコマンドで配置する方法
森 隆博
SQL Developer Support Engineer
Reporting Services のレポートは通常、Business Intelligence Development Studio や、Report Builder のツールを使用してレポートを作成し、Reporting Services に配置します。
時々、こういった GUI ツールからのレポートの配置ではなく、コマンドからレポートの配置を行いたい、というご意見を頂戴することがあります。
ここでは、コマンドライン実行にてレポートを配置する方法をご紹介します。
前提条件
ここでご案内するスクリプトは、以下の前提条件があります。
・コマンドライン実行によるレポート配置の流れ
・以下を定義したスクリプトファイル(rss スクリプトファイル)を用意します。
・配置対象のレポート
・配置先の Reporting Services
・rs ユーティリティ (rs.exe) から、rss スクリプトファイルを実行します。
・Reporting Services バージョン
SQL Server 2008 R2 Reporting Services を対象としたスクリプトです。
・コマンドの実行権限
ユーティリティを実行の際は、管理者権限をもつユーザーアカウントにてログインし、コマンドプロンプトを管理者モードで起動してください。
・スクリプトの文字コード
rss ファイルを Unicode 文字で保存してください。
・以降でご案内するスクリプト実行例に関する前提条件
- スクリプトファイルは「PublishSample.rss」という名称です。
- Reporting Services の「TEST」というフォルダにレポートを配置する設定です。
- 配置する対象のレポートは「Report1.rdl」という名称です。
- 配置するレポートファイルとそれを制御するスクリプトファイルは「C:\Sample」というフォルダに格納しています。
※もちろん、スクリプトファイル名、レポート名、配置先のパス等は任意ですが、ここでは後述の説明の都合上この名称でご説明します。
詳細手順
(1) 配置したいレポート(ここでは「Report1.rdl」)を「C:\Sample」に保存します。
(2) rss スクリプトファイルを用意します。
以下のスクリプトをコピーし、「PublishSample.rss」という名称で Unicode の文字コードで「C:\Sample」に保存します。
Public Shared Sub Main()
Dim rs As New ReportingService2010()
rs.Url = "https://localhost/reportserver//ReportService2010.asmx"
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
Dim definition As [Byte]() = Nothing
Dim warnings As Warning() = Nothing
'配置するレポートの名称を指定する
Dim name As String = "Report1.rdl"
Try
Dim stream As FileStream = File.OpenRead("C:\Sample\" + name)
definition = New [Byte](stream.Length-1) {}
stream.Read(definition, 0, CInt(stream.Length))
stream.Close()
Catch e As IOException
Console.WriteLine(e.Message)
End Try
Try
'レポート配置先のパスを指定する
Dim parentPath As String = "/TEST"
'レポートを配置する
rs.CreateCatalogItem("Report", name, parentPath, True, definition, Nothing, warnings)
If Not (warnings Is Nothing) Then
Dim warning As Warning
For Each warning In warnings
Console.WriteLine(warning.Message)
Next warning
Else
Console.WriteLine("Report: {0} created successfully with no warnings", name)
End If
Catch e As SoapException
Console.WriteLine(e.Detail.InnerXml.ToString())
End Try
End Sub
(3) コマンドプロンプトを管理者モードで実行します。
(4) コマンドプロンプトで、rs ユーティリティが存在するパスに移動します。
既定では以下のパスになります。
C:\Program Files\Microsoft SQL Server\100\Tools\Binn
(5) rs ユーティリティに、(2) で作成したスクリプトファイルと、配置先の Reportint Serivces の URL を指定して実行します。
rs -i<スクリプトファイルのパス> -s<Report Server URL> -e Mgmt2010
実行例)
C:\Program Files\Microsoft SQL Server\100\Tools\Binn>rs -ic:\sample\PublishSample.rss -s https://localhost/reportserver -e Mgmt2010
(6) レポートサーバーの URL にアクセスし(https://MachineName/ReportServer)TEST フォルダの配下に「Report1.rdl」が配置されたことを確認します。
参考情報
rs ユーティリティ
https://msdn.microsoft.com/ja-jp/library/ms162839(v=sql.105).aspx