Share via


プライマリとセカンダリ間のロールの切り替え

SQL Server ログ配布構成をセカンダリ サーバーにフェールオーバーすると、プリイマリ データベースとして機能するようにセカンダリ データベースを構成できます。その後、プライマリ データベースとセカンダリ データベースを必要に応じて切り替えることができます。

初期ロール切り替えの実行

初めてセカンダリ データベースにフェールオーバーし、これを新しいプライマリ データベースとして使用する場合は、次の一連の手順を実行する必要があります。この初期手順を実行した後、プライマリ データベースとセカンダリ データベース間でロールを簡単に切り替えることができるようになります。

  1. プライマリ データベースからセカンダリ データベースに手動でフェールオーバーします。NORECOVERY 句を使用して、プライマリ サーバー上のアクティブなトランザクション ログを必ずバックアップしてください。詳細については、「ログ配布のセカンダリへのフェールオーバー」を参照してください。

  2. 元のプライマリ サーバー上のログ配布バックアップ ジョブと、元のセカンダリ サーバー上のコピーおよび復元ジョブを無効にします。

  3. SQL Server Management Studio を使用して、セカンダリ データベース (新しいプライマリにするデータベース) でログ配布を構成します。詳細については、「ログ配布を有効にする方法 (SQL Server Management Studio)」を参照してください。手順は次のとおりです。

    • 元のプライマリ サーバーについて作成したときと同じ共有を使用してバックアップを作成します。

    • セカンダリ データベースを追加するときは、[セカンダリ データベースの設定] ダイアログ ボックスの [セカンダリ データベース] ボックスに元のプライマリ データベースの名前を入力します。

    • [セカンダリ データベースの設定] ダイアログ ボックスで、[いいえ、セカンダリ データベースは初期化されています] を選択します。

  4. ログ配布モニター処理が以前のログ配布構成で有効にされていた場合、新しいログ配布構成を監視するように、ログ配布モニター処理を再構成してください。次のコマンドを実行します。database_name は使用しているデータベース名に置き換えます。

    1. 新しいプライマリ サーバーの場合

      次の Transact-SQL ステートメントを実行します。

      -- Statement to execute on the new primary server
      USE msdb
      GO
      EXEC master.dbo.sp_change_log_shipping_secondary_database @secondary_database = N'database_name', @threshold_alert_enabled = 0;
      GO
      
      -- Statement to execute on the new primary server
      USE msdb
      GO
      EXEC master.dbo.sp_change_log_shipping_secondary_database @secondary_database = N'database_name', @threshold_alert_enabled = 0;
      GO
      
    2. 新しいセカンダリ サーバーの場合

      次の Transact-SQL ステートメントを実行します。

      -- Statement to execute on the new secondary server
      USE msdb
      GO
      EXEC master.dbo.sp_change_log_shipping_primary_database @database=N'database_name', @threshold_alert_enabled = 0;
      GO
      
      -- Statement to execute on the new secondary server
      USE msdb
      GO
      EXEC master.dbo.sp_change_log_shipping_primary_database @database=N'database_name', @threshold_alert_enabled = 0;
      GO
      

ロールの切り替え

上記の初期ロール切り替えの手順が完了したら、このセクションの手順に従って、プライマリ データベースとセカンダリ データベース間のロールを切り替えることができます。ロールを切り替えるには、次の一般的な手順を実行します。

  1. セカンダリ データベースをオンラインにし、NORECOVERY 句を使用してプライマリ サーバー上のトランザクション ログをバックアップします。

  2. 元のプライマリ サーバー上のログ配布バックアップ ジョブと、元のセカンダリ サーバー上のコピーおよび復元ジョブを無効にします。

  3. セカンダリ サーバー (新しいプライマリ サーバー) 上のログ配布バックアップ ジョブを有効にし、プライマリ サーバー (新しいセカンダリ サーバー) 上のコピーおよび復元ジョブを有効にします。

重要な注意事項重要

セカンダリ データベースをプライマリ データベースに変更するときは、ユーザーおよびアプリケーションに一貫した使用環境を提供するために、新しいプライマリ サーバー インスタンスで、ログインやジョブなどのデータベースのメタデータの一部またはすべてを作成し直す必要がある場合があります。詳細については、「データベースを別のサーバー インスタンスで使用できるようにするときのメタデータの管理」を参照してください。