別のコンピューターへのレポート サーバー データベースの移動 (SSRS ネイティブ モード)

SQL Server データベース エンジン のインストールで使用されるレポート サーバー データベースは、別のコンピューター上のインスタンスに移動できます。 reportserverreportservertempdb データベースは、一緒に移動またはコピーする必要があります。 Reporting Services のインストールには、両方のデータベースが必要です。 reportservertempdb データベースは、移動するプライマリ reportserver データベースに名前で関連付ける必要があります。

適用対象: Reporting Services ネイティブ モード

データベースの移動は、レポート サーバー アイテムに現在定義されているスケジュールされた操作を変更しません。

  • レポート サーバー サービスを初めて再起動したときに、スケジュールが再作成されます。

  • SQL Server エージェント ジョブは、スケジュールを開始する際に使用され、新しいデータベース インスタンスで再作成されます。 このジョブを新しいコンピューターに移動する必要はありませんが、そのコンピューターで今後使用しないジョブは削除することをお勧めします。

  • サブスクリプション、キャッシュされたレポート、およびスナップショットは、移動したデータベースに保持されます。 データベースの移動後にスナップショットが更新されたデータを取得しない場合は、スナップショットオプションをオフにします。 次に、[適用] を選択して変更を保存し、スケジュールを再作成し、もう一度 [適用] を選択して変更を保存します。

  • reportservertempdb に格納される一時的なレポートとユーザー セッション データは、データベースを移動すると保存されます。

SQL Server には、バックアップと復元、アタッチとデタッチ、コピーなど、データベースを移動するための方法がいくつかあります。 ただし、既存のデータベースを新しいサーバー インスタンスに再配置する場合に、これらすべての方法が適切とは限りません。 レポート サーバー データベースを移動するために使用する方法は、システムの可用性要件によって異なります。 レポート サーバー データベースを移動する最も簡単な方法は、レポート サーバー データベースをアタッチおよびデタッチすることです。 ただし、この方法を使用する場合、データベースをデタッチするときにレポート サーバーをオフラインにする必要があります。 サービスの中断を最小限に抑えるには、バックアップと復元のアクションが適しています。ただし、このアクションを行うには、Transact-SQL コマンドを実行する必要があります。 データベースのコピー は、特にデータベースのコピー ウィザードを使用して行うことをお勧めしません。 データベースのアクセス許可設定は保持されません。

重要

この記事の手順をお勧めできるのは、既存環境に対して行う変更が、レポート サーバー データベースの再配置のみの場合です。 Reporting Services のインストール全体を移行するには、接続の再構成と暗号化キーのリセットが必要です。 たとえば、この構成は、データベースを移動し、データベースを使用するレポート サーバー Windows サービスの ID を変更するときに必要です。

レポート サーバー データベースのデタッチとアタッチ

レポート サーバーをオフラインにすると、データベースをデタッチして、使用する SQL Server インスタンスにデータベースを移動できます。 この方法では、権限がデータベースに保持されます。 SQL Server データベースを使用している場合は、SQL Server の別のインスタンスにそのデータベースを移動する必要があります。 データを移動した後、レポート サーバーがそのレポート サーバー データベースに接続されるように再構成する必要があります。 スケールアウト配置を実行している場合は、各レポート サーバーについて、レポート サーバー データベースの接続を再構成する必要があります。

次の手順に従ってデータベースを移動します。

  1. 移動するレポート サーバー データベースの暗号化キーをバックアップします。 Reporting Services 構成ツールを使用してキーをバックアップできます。

  2. レポート サーバー サービスを停止します。 サービスは Reporting Services 構成ツールを使用して停止できます。

  3. SQL Server Management Studio を起動し、レポート サーバー データベースをホストしている SQL Server インスタンスへの接続を開きます。

  4. レポート サーバー データベースを右クリックし、[タスク] をポイントして [デタッチ] を選択します。 レポート サーバーの一時データベースに対しても、この手順を行います。

  5. 使用する SQL Server インスタンスのデータ フォルダーに .mdf ファイルおよび .ldf ファイルをコピーまたは移動します。 2 つのデータベースを移動するので、4 つのファイルがすべて移動またはコピーされていることを確認してください。

  6. Management Studioで、レポート サーバー データベースを新しくホストする SQL Server インスタンスへの接続を開きます。

  7. [データベース] ノードを右クリックし、 [アタッチ] を選択クします。

  8. [追加] を選択して、アタッチするレポート サーバー データベースの .mdf ファイルおよび .ldf ファイルを選択します。 レポート サーバーの一時データベースに対しても、この手順を行います。

  9. データベースをアタッチした後、レポート サーバー データベースおよび一時データベースのデータベース ロールが RSExecRole であることを確認します。 RSExecRole には、レポート サーバー データベースのテーブルの選択、挿入、更新、削除、および参照を行う権限とストアド プロシージャの実行権限が必要です。 詳細については、「 RSExecRole の作成」をご覧ください。

  10. Reporting Services 構成ツールを起動して、レポート サーバー インスタンスへの接続を開きます。

  11. [データベース] ページで新しい SQL Server インスタンスを選択し、 [接続] を選択します。

  12. 移動したレポート サーバー データベースを選んで、 [適用] を選択します。

  13. [暗号化キー] ページで、 [復元]をクリックします。 キーのバックアップ コピーが格納されているファイルとそのパスワードを指定し、ファイルのロックを解除します。

  14. レポート サーバー サービスを再開します。

レポート サーバー データベースのバックアップと復元

レポート サーバーをオフラインにできない場合は、バックアップと復元を使用して、レポート サーバー データベースを再配置できます。 バックアップと復元を実行するには、Transact-SQL ステートメントを使用する必要があります。 データベースを復元した後、新しいサーバー インスタンスのデータベースを使用できるように、レポート サーバーを構成する必要があります。 詳細については、この記事の最後にある手順を参照してください。

BACKUP と COPY_ONLY を使用したレポート サーバー データベースのバックアップ

データベースをバックアップする場合、COPY_ONLY を設定します。 データベースとログ ファイルの両方を必ずバックアップしてください。

-- To permit log backups, before the full database backup, alter the database   
-- to use the full recovery model.  
USE master;  
GO  
ALTER DATABASE ReportServer  
   SET RECOVERY FULL  
  
-- If the ReportServerData device does not exist yet, create it.   
USE master  
GO  
EXEC sp_addumpdevice 'disk', 'ReportServerData',   
'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\BACKUP\ReportServerData.bak'  
  
-- Create a logical backup device, ReportServerLog.  
USE master  
GO  
EXEC sp_addumpdevice 'disk', 'ReportServerLog',   
'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\BACKUP\ReportServerLog.bak'  
  
-- Back up the full ReportServer database.  
BACKUP DATABASE ReportServer  
   TO ReportServerData  
   WITH COPY_ONLY  
  
-- Back up the ReportServer log.  
BACKUP LOG ReportServer  
   TO ReportServerLog  
   WITH COPY_ONLY  
  
-- To permit log backups, before the full database backup, alter the database   
-- to use the full recovery model.  
USE master;  
GO  
ALTER DATABASE ReportServerTempdb  
   SET RECOVERY FULL  
  
-- If the ReportServerTempDBData device does not exist yet, create it.   
USE master  
GO  
EXEC sp_addumpdevice 'disk', 'ReportServerTempDBData',   
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\BACKUP\ReportServerTempDBData.bak'  
  
-- Create a logical backup device, ReportServerTempDBLog.  
USE master  
GO  
EXEC sp_addumpdevice 'disk', 'ReportServerTempDBLog',   
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\BACKUP\ReportServerTempDBLog.bak'  
  
-- Back up the full ReportServerTempDB database.  
BACKUP DATABASE ReportServerTempDB  
   TO ReportServerTempDBData  
   WITH COPY_ONLY  
  
-- Back up the ReportServerTempDB log.  
BACKUP LOG ReportServerTempDB  
   TO ReportServerTempDBLog  
   WITH COPY_ONLY  

RESTORE および MOVE を使用したレポート サーバー データベースの再配置

データベースを復元する際には、パスを指定できるように MOVE 引数を使用してください。 最初の復元を実行するには、NORECOVERY 引数を使用します。 この引数を使用すると、データベースが RESTORING 状態で保たれ、ログのバックアップを確認してどのデータベースを復元するかを決定する時間ができます。 最後の手順では、RESTORE 引数を使用して RECOVERY 操作を繰り返します。

MOVE 引数では、データ ファイルの論理名を使用します。 論理名を検索するには、 次のステートメント: RESTORE FILELISTONLY FROM DISK='C:\ReportServerData.bak'; を実行してください。

復元するログ ファイルの位置を指定できるように、次の例では FILE 引数を使用しています。 ファイルの位置を検索するには、次のステートメント: RESTORE HEADERONLY FROM DISK='C:\ReportServerData.bak'; を実行してください。

データベースとログ ファイルを復元する場合、RESTORE 操作は個別に実行する必要があります。

-- Restore the report server database and move to new instance folder   
RESTORE DATABASE ReportServer  
   FROM DISK='C:\ReportServerData.bak'  
   WITH NORECOVERY,   
      MOVE 'ReportServer' TO   
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServer.mdf',   
      MOVE 'ReportServer_log' TO  
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServer_Log.ldf';  
GO  
  
-- Restore the report server log file to new instance folder   
RESTORE LOG ReportServer  
   FROM DISK='C:\ReportServerData.bak'  
   WITH NORECOVERY, FILE=2  
      MOVE 'ReportServer' TO   
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServer.mdf',   
      MOVE 'ReportServer_log' TO  
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServer_Log.ldf';  
GO  
  
-- Restore and move the report server temporary database  
RESTORE DATABASE ReportServerTempdb  
   FROM DISK='C:\ReportServerTempDBData.bak'  
   WITH NORECOVERY,   
      MOVE 'ReportServerTempDB' TO   
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServerTempDB.mdf',   
      MOVE 'ReportServerTempDB_log' TO  
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\REportServerTempDB_Log.ldf';  
GO  
  
-- Restore the temporary database log file to new instance folder   
RESTORE LOG ReportServerTempdb  
   FROM DISK='C:\ReportServerTempDBData.bak'  
   WITH NORECOVERY, FILE=2  
      MOVE 'ReportServerTempDB' TO   
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServerTempDB.mdf',   
      MOVE 'ReportServerTempDB_log' TO  
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\REportServerTempDB_Log.ldf';  
GO  
  
-- Perform final restore  
RESTORE DATABASE ReportServer  
   WITH RECOVERY  
GO  
  
-- Perform final restore  
RESTORE DATABASE ReportServerTempDB  
   WITH RECOVERY  
GO  

レポート サーバー データベースの接続を構成する方法

  1. Reporting Services 構成ツールを起動して、レポート サーバー インスタンスへの接続を開きます。

  2. [データベース] ページの [データベースの変更] を選択します。 次へを選択します。

  3. [既存のレポート サーバー データベースを選択する]をクリックします。 次へを選択します。

  4. 現在レポート サーバー データベースをホストしている SQL Server を選択し、 [接続テスト] を選択します。 [次へ] を選択します。

  5. [データベース名] で、使用するレポート サーバー データベースを選択します。 [次へ] を選択します。

  6. レポート サーバーがレポート サーバー データベースに接続するときに使用する資格情報を [資格情報] に指定します。 [次へ] を選択します。

  7. [次へ] を選択し、 [完了] を選びます。

Note

Reporting Services のインストールでは、 SQL Server データベース エンジン インスタンスに RSExecRole ロールが含まれている必要があります。 ロールの作成、ログインの登録、およびロールの割り当ては、 Reporting Services 構成ツールでレポート サーバー データベースの接続を設定する際に行います。 別の方法 (特に、rsconfig.exe コマンド プロンプト ユーティリティを使用する場合) で接続を構成する場合は、レポート サーバーが非動作状態になります。 場合によっては、レポート サーバーを利用可能な状態にするための WMI コードを作成する必要があります。 詳細については、「 Reporting Service WMI プロバイダーへのアクセス」を参照してください。

RSExecRole を作成する
レポート サーバー サービスの開始と停止
レポート サーバー データベース接続を構成する
自動実行アカウントの構成
レポート サーバー構成マネージャー
rsconfig ユーティリティ
暗号化キーの構成と管理
レポート サーバー データベース

その他の質問 Reporting Services のフォーラムに質問してみてください