次の方法で共有


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

適用対象: SQL Server Reporting Services (SSRS) ネイティブ モード

SQL Server のインストールで使用するレポート サーバー データベースを、別のコンピューター上のインスタンスに移動できます。

SQL Server には、データベースを移動するためのいくつかの方法が用意されています。

  • デタッチしてアタッチします。 この方法では、レポート サーバー データベースを移動する最も簡単な方法が提供されますが、データベースがデタッチされている間はレポート サーバーをオフラインにする必要があります。
  • バックアップと復元。 この方法ではサービスの中断が最小限に抑えられますが、操作を実行するには Transact-SQL (T-SQL) コマンドを実行する必要があります。
  • コピー。 データベースのコピー ウィザードを使用する場合、データベースのコピーはお勧めしません。 データベースのアクセス許可設定は保持されません。

この記事では、デタッチとアタッチの方法と、バックアップと復元の方法を使用する方法について説明します。

前提条件

  • SQL Server のインストールで使用される、構成済みのネイティブ モードのレポート サーバー。
  • 別のコンピューター上の SQL Server のインスタンス。

データベースの移動を準備する

レポート サーバー データベースを移動するときは、次の点に注意してください。

  • reportserver データベースと reportservertempdb データベースを一緒に移動またはコピーする必要があります。 SSRS のインストールには、両方のデータベースが必要です。
  • 一時データベースの名前は、プライマリ レポート サーバー データベースの名前と同じである必要がありますが、tempdb サフィックスが付いています。
  • データベースの移動は、レポート サーバー アイテムに現在定義されているスケジュールされた操作を変更しません。
    • レポート サーバー サービスを初めて再起動すると、スケジュールが再作成されます。
    • スケジュールのトリガーに使用される SQL Server エージェント ジョブは、新しいデータベース インスタンスに再作成されます。 新しいコンピューターにジョブを移動する必要はありませんが、現在のコンピューターで使用されなくなったジョブを削除することもできます。
    • サブスクリプション、キャッシュされたレポート、およびスナップショットは、移動したデータベースに保持されます。 データベースの移動後にスナップショットが更新されたデータを取得しない場合は、スナップショット オプションをオフにします。 次に、[適用] を選択して変更を保存し、スケジュールを再作成し、[適用] をもう一度選択して変更を保存します。
    • 一時データベースに格納されている一時レポートおよびユーザー セッション データは、そのデータベースを移動しても保持されます。

重要

この記事の手順は、レポート サーバー データベースの再配置が、既存のインストールに加えた唯一の変更である場合に推奨されます。 SSRS インストール全体を移行する場合は、接続を再構成し、暗号化キーをリセットする必要があります。 たとえば、これらの手順は、データベースを移動し、データベースを使用するレポート サーバー Windows サービスの ID を変更するときに必要です。

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

レポート サーバーをオフラインにできる場合は、デタッチとアタッチのアプローチを使用できます。 具体的には、現在の SQL Server インスタンスからデータベースをデタッチします。 次に、それらを移動し、使用するインスタンスにアタッチします。 この方法では、権限がデータベースに保持されます。

データを移動した後、レポート サーバーがそのレポート サーバー データベースに接続されるように再構成する必要があります。 スケールアウト配置を実行する場合は、配置内の各レポート サーバーのレポート サーバー データベース接続を再構成する必要があります。

デタッチとアタッチの方法を使用するには、次のセクションの手順を実行します。

データベースをデタッチする

  1. レポート サーバー構成マネージャーを開きます。

  2. [暗号化キー] ページを使用して、移動するレポート サーバー データベースの暗号化キーをバックアップします。

  3. [レポート サーバーの状態] ページを使用して、レポート サーバー サービスを停止します。

  4. SQL Server Management Studio を開き、レポート サーバー データベースをホストする SQL Server インスタンスに接続します。

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

データベースをアタッチする

  1. 現在の SQL Server インスタンスの.mdfファイルと .ldf ファイルを見つけます。 これらはデータ フォルダーにあります。

    エクスプローラーのスクリーンショット。データ フォルダーでは、レポート サーバー データベースと一時データベースの.mdfファイルと .ldf ファイルが強調表示されます。

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

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

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

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

構成を完了する

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

  2. レポート サーバー構成マネージャーを起動し、レポート サーバーへの接続を開きます。

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

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

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

  6. レポート サーバー サービスを再起動します。

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

レポート サーバーをオフラインにできない場合は、バックアップと復元の方法を使用してレポート サーバー データベースを再配置できます。 この方法では、T-SQL ステートメントを使用する必要があります。

以降のセクションの手順では、データベースをバックアップおよび復元する方法と、新しいサーバー インスタンスでデータベースを使用するようにレポート サーバーを構成する方法について説明します。

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

データベースをバックアップするには、SQL Server Management Studio を開き、クエリ ウィンドウで次のステートメントを実行します。 これらのステートメントは引数を COPY_ONLY 使用し、データベースとログ ファイルの両方をバックアップします。

これらのステートメントを実行する前に、 <path-to-backup-folder> プレースホルダーを現在のインスタンスの Backup フォルダーへのパス (例: C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\BACKUP.

-- To permit log backups, alter the database to use the full recovery model
-- before you run the full database backup.
USE master;
GO
ALTER DATABASE ReportServer
   SET RECOVERY FULL

-- First back up the database without using the COPY_ONLY argument.
-- This step is needed after you change the recovery model to full.
-- It prevents a 4214 error from occurring.
USE master;
GO
BACKUP DATABASE ReportServer
TO DISK = '<path-to-backup-folder>\ReportServerExtraBackup.bak'
GO

-- If the ReportServerData device doesn't exist yet, create it.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerData',
'<path-to-backup-folder>\ReportServerData.bak'

-- Create a logical backup device, ReportServerLog.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerLog',
'<path-to-backup-folder>\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, alter the database to use the full recovery model
-- before you run the full database backup.
USE master;
GO
ALTER DATABASE ReportServerTempdb
   SET RECOVERY FULL

-- First back up the database without using the COPY_ONLY argument.
-- This step is needed after you change the recovery model to full.
-- It prevents a 4214 error from occurring.
USE master;
GO
BACKUP DATABASE ReportServerTempdb
TO DISK = '<path-to-backup-folder>\ReportServerTempdbExtraBackup.bak'
GO

-- If the ReportServerTempDBData device doesn't exist yet, create it.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerTempDBData',
'<path-to-backup-folder>\ReportServerTempDBData.bak'

-- Create a logical backup device, ReportServerTempDBLog.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerTempDBLog',
'<path-to-backup-folder>\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 を使用したレポート サーバー データベースの再配置

データベースを復元するには、SQL Server Management Studio を開き、クエリ ウィンドウで次のステートメントを実行します。

これらのステートメントでは、次の手順を実行します。

  • データベース ファイルとログ ファイルの操作は RESTORE 個別に実行されます。

  • この引数は MOVE 、パスを指定する方法を提供します。 この引数は、データ ファイルの論理名を使用します。 論理名を検索するには、次のステートメントを実行します。 最初に、 <path-to-report-server-database-backup-file> プレースホルダーを、レポート サーバー データベース のバックアップ ファイルへのパスに置き換えます 。次に例を示 C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\ReportServerData.bakします。

    RESTORE FILELISTONLY FROM DISK='<path-to-report-server-database-backup-file>';
    

    論理名は、出力の LogicalName 列にあります。

    SQL Server Management Studio クエリ ウィンドウの RESTORE FILELISTONLY ステートメントのスクリーンショット。出力では、LogicalName 列が強調表示されています。

    同様のステートメントを実行して、一時データベースの論理名を見つけることができます。

    RESTORE FILELISTONLY FROM DISK='<path-to-temporary-database-backup-file>';
    
  • この FILE 引数は、復元するログ ファイルのファイル位置を指定する方法を提供します。 ファイルの位置を見つけるには、次のステートメントを実行します。 最初に、 <path-to-report-server-database-backup-file> プレースホルダーを、レポート サーバー データベース のバックアップ ファイルへのパスに置き換えます 。次に例を示 C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\ReportServerData.bakします。

    RESTORE HEADERONLY FROM DISK='<path-to-report-server-database-backup-file>';
    

    ファイルの位置は、出力の [位置] 列にあります。

    SQL Server Management Studio クエリ ウィンドウの RESTORE HEADERONLY ステートメントのスクリーンショット。出力では、[位置] 列が強調表示されています。

    同様のステートメントを実行して、一時データベースのファイル位置を見つけることができます。

    RESTORE HEADERONLY FROM DISK='<path-to-temporary-database-backup-file>';
    
  • 引数は NORECOVERY 初期復元を実行します。 この引数はデータベースを RESTORING 状態に保ちます。これにより、ログ バックアップを確認して、復元するバックアップを決定する時間が与えられます。

  • 最後の手順では、RESTORE 引数を使用して RECOVERY 操作を繰り返します。

これらのステートメントを実行する前に、次のプレースホルダーを適切な値に置き換えます。

プレースホルダー Description
<path-to-backup-folder> 現在のインスタンスの Backup フォルダーへのパス C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\BACKUP
<path-to-new-data-folder> 新しいインスタンスの Data フォルダーへのパス C:\Program Files\Microsoft SQL Server\MSSQL16.NEWINSTANCE\MSSQL\DATA
<report-server-database-logical-name> レポート サーバー データベースの論理名 ReportServer
<report-server-database-log-logical-name> レポート サーバー データベース ログの論理名 ReportServer_log
<report-server-database-log-file-position> レポート サーバー データベース ログ ファイルのファイル位置 2
<temporary-database-logical-name> 一時データベースの論理名 ReportServerTempDB
<temporary-database-log-logical-name> 一時データベース ログの論理名 ReportServerTempDB_log
<temporary-database-log-file-position> 一時データベース ログ ファイルのファイル位置 2
-- Restore the report server database and move it to the new instance folder.
RESTORE DATABASE ReportServer
   FROM DISK='<path-to-backup-folder>\ReportServerData.bak'
   WITH NORECOVERY,
      MOVE '<report-server-database-logical-name>' TO
         '<path-to-new-data-folder>\ReportServer.mdf',
      MOVE '<report-server-database-log-logical-name>' TO
         '<path-to-new-data-folder>\ReportServer_Log.ldf';
GO

-- Restore the report server log file to the new instance folder.
RESTORE LOG ReportServer
   FROM DISK='<path-to-backup-folder>\ReportServerData.bak'
   WITH NORECOVERY, FILE=<report-server-database-log-file-position>,
      MOVE '<report-server-database-logical-name>' TO
         '<path-to-new-data-folder>\ReportServer.mdf',
      MOVE '<report-server-database-log-logical-name>' TO
         '<path-to-new-data-folder>\ReportServer_Log.ldf';
GO

-- Restore and move the report server temporary database.
RESTORE DATABASE ReportServerTempdb
   FROM DISK='<path-to-backup-folder>\ReportServerTempDBData.bak'
   WITH NORECOVERY,
      MOVE '<temporary-database-logical-name>' TO
         '<path-to-new-data-folder>\ReportServerTempDB.mdf',
      MOVE '<temporary-database-log-logical-name>' TO
         '<path-to-new-data-folder>\ReportServerTempDB_Log.ldf';
GO

-- Restore the temporary database log file to the new instance folder.
RESTORE LOG ReportServerTempdb
   FROM DISK='<path-to-backup-folder>\ReportServerTempDBData.bak'
   WITH NORECOVERY, FILE=<temporary-database-log-file-position>,
      MOVE '<temporary-database-logical-name>' TO
         '<path-to-new-data-folder>\ReportServerTempDB.mdf',
      MOVE '<temporary-database-log-logical-name>' TO
         '<path-to-new-data-folder>\ReportServerTempDB_Log.ldf';
GO

-- Perform the final restore operation on the report database.
RESTORE DATABASE ReportServer
   WITH RECOVERY
GO

-- Perform the final restore operation on the temporary database.
RESTORE DATABASE ReportServerTempDB
   WITH RECOVERY
GO

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

  1. レポート サーバー構成マネージャーを起動し、レポート サーバーへの接続を開きます。

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

  3. [データベースの変更] ページで、[既存のレポート サーバー データベースの選択] を選択し、[次へ] を選択します。

  4. [サーバー名] に、レポート サーバー データベースをホストする SQL Server インスタンスを入力し、[テスト接続] を選択します。

  5. 接続をテストしたら、[次へ] を選択します

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

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

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

Note

SSRS のインストールでは、SQL Server データベース エンジン インスタンスに RSExecRole ロールを含める必要があります。 レポート サーバー構成マネージャーを使用してレポート サーバー データベース接続を設定すると、ロールの作成、ログイン登録、およびロールの割り当てが行われます。 rsconfig.exeコマンド プロンプト ユーティリティなどの別の方法を使用する場合、レポート サーバーは動作状態ではありません。 その場合は、レポート サーバーを使用できるようにするために、Windows Management Instrumentation (WMI) コードを記述する必要がある場合があります。 詳細については、「Reporting Services WMI プロバイダーへのアクセス」を参照してください