配置タスクおよび管理タスクのスクリプト作成

Reporting Services は、スクリプトを使用した日常的なインストール、配置、および管理タスクの自動化をサポートします。 レポート サーバーの配置は複数の段階を伴うプロセスです。 配置を構成するためには複数のツールとプロセスを使用する必要があります。すべての作業を自動化する単一のプログラムやアプローチは存在しません。

すべての手順を自動化することが必ずしも有効な手段ではありません。 場合によっては、手作業またはグラフィカルなツールで作業することが、最も効率的かつシンプルな手段になる場合もあります。 たとえば、大量のレポートやモデルを配置する必要がある場合、レポート サーバー環境を再構築するようなコードを作成するよりも、レポート サーバー データベースをコピーした方が効率的です。

中には、カスタム コードを必要とする手順もあります。 たとえば、Web サービスとレポート マネージャーの URL の構成は自動化できますが、そのためには、レポート サーバーの Windows Management Instrumentation (WMI) プロバイダーを呼び出すカスタム コードを作成しなければなりません。 コードを作成したくない場合は、Reporting Services 構成ツールを使用して、この手順を実行する必要があります。

レポート サーバーを構成するスクリプトを実行するには、構成するコンピューターのローカル管理者である必要があります。 詳細については、「 リモート管理用のレポート サーバーの構成」を参照してください。

この記事では、特定の手順を自動化する際に推奨されるアプローチについて説明します。 いくつかのプログラムやプログラム インターフェイスに触れ、この記事でそれぞれについて後述します。

配置タスクと自動化の方法

次の表は、レポート サーバーを配置するために必要なインストール タスクおよび構成タスクをまとめたものです。 特定のタスクと、それを自動化するためのアプローチがひとめでわかるように記載されています。

タスク 方法
Reporting Servicesをインストールする。 コマンド ラインからセットアップを実行することによって自動インストールが可能です。

セットアップ プログラムを使用すると、レポート サーバーのインストールと構成の両方を行うことができます。ただし、この場合は、既定の構成オプションを指定すること、システムが自動インストール要件をすべて満たしていることが条件となります。 既定の構成でインストールできない場合は、ファイルのみのインストールを実行する必要があります。
サービス アカウントを構成する。 サービス アカウントは、最初にセットアップを使用して構成されます。 サービス アカウントに対する変更をセットアップ後のタスクとして自動化するには、レポート サーバー WMI プロバイダーを呼び出すカスタム コードを作成する必要があります。 サービス アカウントをプログラムによって構成するためのコマンド プロンプト ユーティリティやスクリプト テンプレートはありません。

コードを作成するのが困難であるなど、なんらかの理由でこの手順を自動化できない場合は、 Reporting Services 構成ツールを実行することにより、アカウントを手動で簡単に構成できます。 詳細については、サービス アカウントの構成 (レポート サーバーの構成マネージャー) に関する記事を参照してください。
レポート サーバー Web サービスとレポート マネージャーの URL を構成する。 レポート サーバー WMI プロバイダーを呼び出すカスタム コードを作成する必要があります。 URL を構成するためのコマンド ライン ユーティリティやスクリプト テンプレートはありません。

Reporting Services 構成ツールを実行して URL を手動で構成した場合、コードを作成する必要はありません。 詳細については、「URL の構成 (レポート サーバー構成マネージャー)」を参照してください。
レポート サーバー データベースを作成する。 レポート サーバー WMI プロバイダーを呼び出すカスタム コードを作成する必要があります。 レポート サーバー データベースと RSExecRole を作成するためのコマンド プロンプト ユーティリティやスクリプト テンプレートはありません。

Reporting Services 構成ツールを実行してデータベースを手動で作成した場合、コードを作成する必要はありません。 詳細については、「ネイティブ モードのレポート サーバー データベースの作成 (レポート サーバー構成マネージャー)」を参照してください。
レポート サーバー データベース接続を構成する。 接続文字列、アカウントまたはパスワード、認証の種類を変更する場合は、rsconfig ユーティリティを実行して接続を構成します。 詳細については、レポート サーバー データベース接続の構成 (レポート サーバーの構成マネージャー)に関する記事、および「rsconfig ユーティリティ (SSRS)」を参照してください。

データベースの作成またはアップグレードに rsconfig.exe を使用することはできません。 データベースと RSExecRole が既に存在している必要があります。
スケールアウト配置を構成する。 スケールアウト配置を自動化するには、次のいずれかのアプローチを使用します。

- rskeymgmt.exe ユーティリティを実行して、レポート サーバー インスタンスを既存の環境に追加する。 詳細については、スケールアウト配置に関する暗号化キーの追加と削除 (レポート サーバー構成マネージャー) に関する記事を参照してください。
- レポート サーバー WMI プロバイダーに対して実行するカスタム コードを作成する。
暗号化キーをバックアップする。 暗号化キーのバックアップを自動化するには、次のいずれかのアプローチを使用します。

- rskeymgmt.exe ユーティリティを実行してキーをバックアップする。 詳細については、「 Back Up and Restore Reporting Services Encryption Keys」を参照してください。
- レポート サーバー WMI プロバイダーに対して実行するカスタム コードを作成する。
レポート サーバーの電子メールを構成する。 Reporting Services WMI プロバイダーに対して実行するカスタム コードを作成します。 プロバイダーでは、電子メールの構成設定のサブセットがサポートされています。

RSReportServer.config ファイルにはすべての設定が含まれていますが、このファイルの使用を自動化しないようにしてください。 特に、ファイルを別のレポート サーバーにコピーするためにバッチ ファイルを使用しないでください。 各構成ファイルには、現在のインスタンスに固有の値が含まれています。 これらの値は、別のレポート サーバー インスタンスでは無効です。

設定の詳細については、「電子メールの設定 - Reporting Services のネイティブ モード (Configuration Manager)」を参照してください。
自動実行アカウントを構成する。 自動実行アカウントの構成を自動化するには、次のいずれかのアプローチを使用します。

- rsconfig.exe ユーティリティを実行してアカウントを構成する。 詳細については、「自動実行アカウントの構成 (レポート サーバー構成マネージャー)」を参照してください。
- レポート サーバー WMI プロバイダーを呼び出すカスタム コードを作成する。
既存のコンテンツを別のレポート サーバー上に配置する (フォルダー階層、ロールの割り当て、レポート、サブスクリプション、スケジュール、データ ソース、リソースなど)。 既存のレポート サーバー環境を再構築する最善の方法は、レポート サーバー データベースを新しいレポート サーバー インスタンスにコピーすることです。

カスタム コードを作成して、既存のレポート サーバーのコンテンツをプログラムによって再構築する方法もあります。 ただし、サブスクリプション、レポート スナップショット、レポート履歴は、プログラムによって再作成できません。

一部の展開では、両方の手法を組み合わせて使用するとメリットがあります。 たとえば、レポート サーバー データベースを復元し、特定のインストール用にレポート サーバー データベースを変更するカスタム コードを実行します。

詳細な例については、「レポート サーバー間でコンテンツをコピーするサンプル Reporting Services rs.exe スクリプト」を参照してください。

レポート サーバー データベースの再配置の詳細については、「別のコンピューターへのレポート サーバー データベースの移動 (SSRS ネイティブ モード)」を参照してください。 レポート サーバー環境をプログラムによって構築する方法の詳細については、この記事の「スクリプトを使用したレポート サーバー コンテンツとフォルダーの移行」を参照してください。

サーバー配置を自動化するためのツールと技法

配置タスクとメンテナンス タスクを自動化するためのプログラムおよびインターフェイスを次に示します。

  • セットアップ プログラムを自動モードで実行して、レポート サーバー コンポーネントのインストールから、場合によっては構成までを行うことができます。 ファイルのみのインストール オプションを使用して、セットアップ時にレポート サーバー インスタンスが構成されるようにする必要があります。

  • ローカル サーバーとリモート サーバーの構成には、 Reporting Services WMI プロバイダーおよび Reporting Services のコマンド ライン ユーティリティを使用できます。

    Reporting Services WMI プロバイダーは、Reporting Services インストールのすべての側面を構成できるクラス、プロパティ、およびメソッドを公開します。 これらの側面には、サービス アカウントの指定と URL の構成が含まれます。 また、レポート サーバー データベースの作成と構成、または電子メール配信用のレポート サーバーの構成も含まれます。 WMI プロバイダーを使用するには、カスタム コードまたはスクリプトを作成する必要があります。 詳細については、「 Reporting Service WMI プロバイダーへのアクセス」を参照してください。

    コードを作成する代わりに、コマンド ライン ユーティリティ (rsconfig.exe および rskeymgmt.exe) を使用することもできます。 これらのユーティリティを実行するバッチ ファイルを作成できます。 構成タスクの一部は、これらのユーティリティを使って自動化できます。

  • 既存のコンテンツを再構築したり、レポート サーバーからレポート サーバーに移動したりするためのカスタム コードを Microsoft Visual Basic で作成し、レポート サーバーのスクリプト ホスト ツール (rs.exe) で実行できます。 このアプローチでは、Visual Basicでスクリプトを作成して .rss ファイルとして保存し、そのスクリプトを rs.exeを使用して、対象レポート サーバー上で実行します。 作成するスクリプトでは、レポート サーバー Web サービスに対する SOAP インターフェイスを呼び出すことができます。 配置スクリプトは、レポート サーバー フォルダーの名前空間および内容の再作成や、ロールベースのセキュリティの再作成を可能にするため、このアプローチで作成します。

  • SQL Server 2012 リリースでは、SharePoint 統合モード用の PowerShell コマンドレットが導入されました。 PowerShell を使用して、SharePoint 統合を構成および管理することができます。 詳細については、「Reporting Services SharePoint モード用の PowerShell コマンドレット」をご覧ください。

スクリプトを使用したレポート サーバー コンテンツとフォルダーの移行

レポート サーバー環境を別のレポート サーバー インスタンスに複製するためのスクリプトを作成できます。 配置スクリプトは、Visual Basic で作成し、レポート サーバーのスクリプト ホスト ユーティリティで処理します。

詳細な例については、「レポート サーバー間でコンテンツをコピーするサンプル Reporting Services rs.exe スクリプト」を参照してください。

スクリプトを使用して、フォルダー、共有データ ソース、リソース、レポート、ロールの割り当て、および設定を、あるサーバーから別のサーバーにコピーします。 1 つのレポート サーバー インスタンス用のスクリプトを作成してから、そのスクリプトを別のサーバーで実行して、レポート サーバー名前空間を再作成します。 Reporting Services で、複数のレポート サーバーを配置している場合は、各サーバーで個別にスクリプトを実行して、すべてのサーバーを同様に構成できます。

次の一覧で、あるサーバーから別のサーバーにレポートを移行する手順を示します。

  1. スクリプト変数を移行元レポート サーバーの URL に設定します。

  2. GetItemDefinition メソッドおよび GetProperties メソッドを使用して、レポートのレポート定義およびプロパティを取得します。

  3. 移行先サーバーを指すように URL を設定します。

  4. CreateCatalogItem メソッドを使用し、GetProperties から返されたプロパティと GetItemDefinition から返されたレポート定義を渡します。

get メソッドと create メソッドを組み合わせて使用することで、設定、フォルダー、共有データ ソース、およびリソースの移行と同様の手順を実行できます。 使用可能なメソッドの詳細については、「テクニカル リファレンス (SSRS)」を参照してください。

Note

スクリプトは、資格情報を明示的に設定しない限り、スクリプトを実行しているユーザーの Microsoft Windows 資格情報を使用して実行されます。

スクリプト ファイルのフォーマットおよび実行方法の詳細については、「 rs.exe ユーティリティと Web サービスを使用したスクリプト」を参照してください。

スクリプトを使用したサーバー プロパティの設定

レポート サーバーのシステム プロパティを設定するスクリプトを作成できます。 次の Visual Basic .NET スクリプトは、プロパティを設定する 1 つの方法を示しています。 この例では RSClientPrint ActiveX コントロールを無効にしていますが、 EnableClientPrinting および False を有効なプロパティ名と値に置き換えることができます。 サーバーのプロパティの完全な一覧については、「 レポート サーバーのシステム プロパティ」を参照してください。

スクリプトを使用するには、.rss 拡張子を持つファイルにスクリプトを保存し、rs.exeコマンド プロンプト ユーティリティを使用してレポート サーバー上でファイルを実行します。 スクリプトはコンパイルされないので、Visual Basic のインストールは不要です。 この例では、レポート サーバーをホストするローカル コンピューターに対する権限を持っていることを前提としています。 権限があるアカウントでログオンしていない場合は、その他のコマンド ライン引数を使用してアカウント情報を指定する必要があります。 詳細については、「RS.exe ユーティリティ (SSRS)」を参照してください。

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