配置タスクおよび管理タスクのためのスクリプト作成
Reporting Services は、スクリプトを使用した日常的なインストール、配置、および管理タスクの自動化をサポートします。レポート サーバーの配置は複数の段階を伴うプロセスです。配置を構成するためには複数のツールとプロセスを使用する必要があります。すべての作業を自動化する単一のプログラムやアプローチは存在しません。
すべての手順を自動化することが必ずしも有効な手段ではありません。場合によっては、手作業またはグラフィカルなツールで作業することが、最も効率的かつシンプルな手段になる場合もあります。たとえば、大量のレポートやモデルを配置する必要がある場合、レポート サーバー環境を再構築するようなコードを作成するよりも、レポート サーバー データベースをコピーした方が効率的です。
中には、カスタム コードを必要とする手順もあります。たとえば、Web サービスとレポート マネージャーの URL の構成は自動化できますが、そのためには、レポート サーバーの Windows Management Instrumentation (WMI) プロバイダーを呼び出すカスタム コードを作成しなければなりません。なんらかの理由でコードを作成したくない場合は、Reporting Services 構成ツールを使用して、この手順を実行する必要があります。
レポート サーバーを構成するスクリプトを実行するには、構成するコンピューターのローカル管理者である必要があります。詳細については、「レポート サーバーをリモート管理用に構成する方法」を参照してください。
このトピックでは、特定の手順を自動化する際に推奨されるアプローチについて説明します。いくつかのプログラムやプログラム インターフェイスに触れ、このトピックでそれぞれについて後述します。
配置タスクと自動化の方法
次の表は、レポート サーバーを配置するために必要なインストール タスクおよび構成タスクをまとめたものです。特定のタスクと、それを自動化するためのアプローチがひとめでわかるように記載されています。
タスク |
アプローチ |
---|---|
Reporting Services をインストールする。 |
コマンド ラインからセットアップを実行することによって自動インストールが可能です。 セットアップ プログラムを使用すると、レポート サーバーのインストールと構成の両方を行うことができます。ただし、この場合は、既定の構成オプションを指定すること、システムが自動インストール要件をすべて満たしていることが条件となります。既定の構成でインストールすることができない場合は、ファイルのみのインストールを実行する必要があります。インストール オプションの詳細については、「Reporting Services のインストールに関する注意点」を参照してください。 |
サービス アカウントを構成する。 |
サービス アカウントは、最初にセットアップを使用して構成されます。サービス アカウントに対する変更をセットアップ後のタスクとして自動化するには、レポート サーバー WMI プロバイダーを呼び出すカスタム コードを作成する必要があります。サービス アカウントをプログラムによって構成するためのコマンド プロンプト ユーティリティやスクリプト テンプレートはありません。 コードを作成するのが困難であるなど、なんらかの理由でこの手順を自動化できない場合は、Reporting Services 構成ツールを実行することにより、アカウントを手動で簡単に構成できます。詳細については、「Reporting Services のサービス アカウントを構成する方法」を参照してください。 |
レポート サーバー Web サービスとレポート マネージャーの URL を構成する。 |
レポート サーバー WMI プロバイダーを呼び出すカスタム コードを作成する必要があります。URL を構成するためのコマンド ライン ユーティリティやスクリプト テンプレートはありません。 Reporting Services 構成ツールを実行して URL を手動で構成した場合、コードを作成する必要はありません。詳細については、「URL を構成する方法 (Reporting Services 構成)」を参照してください。 |
レポート サーバー データベースを作成する。 |
レポート サーバー WMI プロバイダーを呼び出すカスタム コードを作成する必要があります。レポート サーバー データベースと RSExecRole を作成するためのコマンド プロンプト ユーティリティやスクリプト テンプレートはありません。 Reporting Services 構成ツールを実行してデータベースを手動で作成した場合、コードを作成する必要はありません。詳細については、「レポート サーバー データベースを作成する方法 (Reporting Services 構成)」を参照してください。 |
レポート サーバー データベース接続を構成する。 |
接続文字列、アカウントまたはパスワード、認証の種類を変更する場合は、rsconfig ユーティリティを実行して接続を構成します。詳細については、「レポート サーバー データベース接続の構成」および「rsconfig ユーティリティ」を参照してください。 データベースの作成またはアップグレードに rsconfig.exe を使用することはできません。データベースと RSExecRole が既に存在している必要があります。 |
スケールアウト配置を構成する。 |
スケールアウト配置を自動化するには、次のいずれかのアプローチを使用します。
|
暗号化キーをバックアップする。 |
暗号化キーのバックアップを自動化するには、次のいずれかのアプローチを使用します。
|
レポート サーバーの電子メールを構成する。 |
Reporting Services WMI プロバイダーに対して実行するカスタム コードを作成します。プロバイダーでは、電子メールの構成設定のサブセットがサポートされています。 RSReportServer.config ファイルにはすべての設定が含まれていますが、このファイルの使用を自動化しないようにしてください。特に、ファイルを別のレポート サーバーにコピーする場合は、バッチ ファイルを使用しないでください。各構成ファイルには、現在のインスタンスに固有の値が含まれています。これらの値は、別のレポート サーバー インスタンスでは無効になります。 この設定の詳細については、「電子メール配信用のレポート サーバーの構成」を参照してください。 |
自動実行アカウントを構成する。 |
自動実行アカウントの構成を自動化するには、次のいずれかのアプローチを使用します。
|
既存のコンテンツを別のレポート サーバー上に配置する (フォルダー階層、ロールの割り当て、レポート、サブスクリプション、スケジュール、データ ソース、リソースなど)。 |
既存のレポート サーバー環境を再構築する最善の方法は、レポート サーバー データベースを新しいレポート サーバー インスタンスにコピーすることです。 カスタム コードを作成して、既存のレポート サーバーのコンテンツをプログラムによって再構築する方法もあります。ただし、サブスクリプション、レポート スナップショット、レポート履歴は、プログラムによって再作成できないことに注意してください。 場合によっては両者を組み合わせた方法も効果的です (つまり、レポート サーバー データベースを復元してから、カスタム コードによって、特定の環境に合わせてレポート サーバー データベースを更新します)。 レポート サーバー データベースの再配置の詳細については、「別のコンピューターへのレポート サーバー データベースの移動」を参照してください。レポート サーバー環境をプログラムによって構築する方法の詳細については、このトピックの「スクリプトを使用したレポート サーバー コンテンツとフォルダーの移行」を参照してください。 |
サーバー配置を自動化するためのツールと技法
配置タスクとメンテナンス タスクを自動化するためのプログラムおよびインターフェイスを次に示します。
セットアップ プログラムを自動モードで実行して、レポート サーバー コンポーネントのインストールから、場合によっては構成までを行うことができます。ファイルのみのインストール オプションを使用して、セットアップ時にレポート サーバー インスタンスが構成されるようにする必要があります。
ローカル サーバーとリモート サーバーの構成には、Reporting Services WMI プロバイダーおよび Reporting Services のコマンド ライン ユーティリティを使用できます。
Reporting Services WMI プロバイダーは、サービス アカウントの指定、URL の構成、レポート サーバー データベースの作成と構成、電子メール配信用のレポート サーバーの構成など、Reporting Services のインストールのあらゆる機能を構成するための、クラス、プロパティ、およびメソッドを公開します。WMI プロバイダーを使用するには、カスタム コードまたはスクリプトを作成する必要があります。詳細については、「Reporting Services WMI プロバイダー」を参照してください。
コードを作成する代わりに、コマンド ライン ユーティリティ (rsconfig.exe および rskeymgmt.exe) を使用することもできます。これらのユーティリティを実行するバッチ ファイルを作成できます。構成タスクの一部は、これらのユーティリティを使って自動化できます。
既存のコンテンツを再構築したり、レポート サーバーからレポート サーバーに移動したりするためのカスタム コードを Microsoft Visual Basic で作成し、レポート サーバーのスクリプト ホスト ツール (rs.exe) で実行できます。このアプローチでは、Visual Basic でスクリプトを作成して .rss ファイルとして保存し、そのスクリプトを rs.exe を使用して、対象レポート サーバー上で実行します。作成するスクリプトでは、レポート サーバー Web サービスに対する SOAP インターフェイスを呼び出すことができます。配置スクリプトは、レポート サーバー フォルダーの名前空間および内容の再作成や、ロールベースのセキュリティの再作成を可能にするため、このアプローチで作成します。
スクリプトを使用したレポート サーバー コンテンツとフォルダーの移行
レポート サーバー環境を別のレポート サーバー インスタンスに複製するためのスクリプトを作成できます。配置スクリプトは、一般的には Visual Basic で作成し、レポート サーバーのスクリプト ホスト ユーティリティで処理します。
スクリプトを使用して、フォルダー、共有データ ソース、リソース、レポート、ロールの割り当て、および設定を、あるサーバーから別のサーバーにコピーします。1 つのレポート サーバー インスタンス用のスクリプトを作成してから、そのスクリプトを別のサーバーで実行して、レポート サーバー名前空間を再作成します。Reporting Services で、複数のレポート サーバーを配置している場合は、各サーバーで個別にスクリプトを実行して、すべてのサーバーを同様に構成できます。
次の一覧で、あるサーバーから別のサーバーにレポートを移行する手順を示します。
スクリプト変数を移行元レポート サーバーの URL に設定します。
GetItemDefinition メソッドおよび GetProperties メソッドを使用して、レポートのレポート定義およびプロパティを取得します。
移行先サーバーを指すように URL を設定します。
CreateCatalogItem メソッドを使用し、GetProperties から返されたプロパティと GetItemDefinition から返されたレポート定義を渡します。
get メソッドと create メソッドを組み合わせて使用することで、設定、フォルダー、共有データ ソース、およびリソースの移行と同様の手順を実行できます。使用可能なメソッドの詳細については、「テクニカル リファレンス (Reporting Services)」を参照してください。
注 |
---|
スクリプトは、資格情報を明示的に設定しない限り、スクリプトを実行しているユーザーの Microsoft Windows 資格情報を使用して実行されます。 |
スクリプト ファイルのフォーマットおよび実行方法の詳細については、「rs ユーティリティと Web サービスを使用したスクリプト」を参照してください。
スクリプトを使用したサーバー プロパティの設定
レポート サーバーのシステム プロパティを設定するスクリプトを作成できます。次の Visual Basic .NET スクリプトは、プロパティを設定する 1 つの方法を示しています。この例では RSClientPrint ActiveX コントロールを無効にしていますが、EnableClientPrinting および False を有効なプロパティ名と値に置き換えることができます。サーバーのプロパティの完全な一覧については、「レポート サーバーのシステム プロパティ」を参照してください。
スクリプトを使用するには、.rss 拡張子を持つファイルにスクリプトを保存し、rs.exe コマンド プロンプト ユーティリティを使用してレポート サーバー上でファイルを実行します。スクリプトはコンパイルされないので Visual Basic のインストールは不要です。この例では、レポート サーバーをホストするローカル コンピューターに対する権限を持っていることを前提としています。権限があるアカウントでログオンしていない場合は、追加のコマンド ライン引数を使用してアカウント情報を指定する必要があります。詳細については、「rs ユーティリティ」を参照してください。
Public Sub Main()
Dim props(0) As [Property]
Dim setProp As New [Property]
setProp.Name = "EnableClientPrinting"
setProp.Value = “False”
props(0) = setProp
Try
rs.SetSystemProperties(props)
Catch ex As System.Web.Services.Protocols.SoapException
Console.Write(ex.Detail.InnerXml)
Catch e as Exception
Console.Write(e.Message)
End Try
End Sub
関連項目