ミラーリングのためのミラー データベースの準備 (SQL Server)

適用対象:SQL Server

注意事項

この機能は、将来のバージョンの SQL Server で削除される予定です。 新しい開発作業ではこの機能を使用しないでください。現在この機能を使用しているアプリケーションを変更することを計画してください。 高可用性を実現するために、代わりに Always On 可用性グループを使用してください。

重要

SQL Server のデータベース ミラーリングは、Microsoft Fabric データベース ミラーリングとは異なるテクノロジです。 Fabric へのミラーリングにより、分析パフォーマンスが向上し、データ資産を Fabric の OneLake と統合し、Delta Parquet 形式でデータへのアクセスを開く機能が提供されます。

Microsoft Fabric へのミラーリングを使用すると、SQL Server 2016 以降、Azure SQL Database、Azure SQL Managed Instance、Cosmos DB、Oracle、Snowflake などのデータを含め、既存のデータ資産を Fabric の OneLake に継続的にレプリケートできます。

データベース ミラーリング セッションを開始する前に、データベース所有者またはシステム管理者は、ミラー データベースを作成し、ミラーリング用に準備しておく必要があります。 新しいミラー データベースを作成するには、少なくとも、プリンシパル データベースの完全バックアップとそれ以降のログ バックアップを作成し、その両方をミラー サーバーのインスタンスに (WITH NORECOVERY を使用して) 復元する必要があります。

このトピックでは、SQL Server Management Studio または Transact-SQL を使用して、SQL Server でミラー データベースを準備する方法について説明します。

必要条件

  • プリンシパル サーバー インスタンスとミラー サーバー インスタンスは、同じバージョンの SQL Serverで実行されている必要があります。 ミラー サーバーで SQL Server の新しいバージョンを実行することはできますが、この構成は慎重に計画されたアップグレード プロセスにおいてのみ推奨されます。 そのような構成では、自動フェールオーバーが発生したときに SQL Server の古いバージョンにデータを移動できず、データの移動が自動的に保留される可能性があります。 詳細については、「 ミラー化されたインスタンスのアップグレード」を参照してください。

  • プリンシパル サーバー インスタンスとミラー サーバー インスタンスは、同じエディションの SQL Serverで実行されている必要があります。 SQL Serverのエディションでサポートされている機能一覧については、「SQL Server 2025のエディションおよびサポート機能」をご覧ください。

  • このデータベースは、完全復旧モデルを使用する必要があります。

    詳細については、「データベース (SQL Server) または の復旧モデルの表示または変更」をALTER DATABASEしてください。

  • ミラー データベースの名前は、プリンシパル データベースと同じ名前にする必要があります。

  • ミラーリングが機能するには、ミラー データベースは RESTORING 状態である必要があります。 ミラー データベースを準備するときは、復元操作ごとに RESTORE WITH NORECOVERY を使用する必要があります。 少なくとも、WITH NORECOVERY を指定して、プリンシパル データベースの完全バックアップと、以降のすべてのログ バックアップを復元する必要があります。

  • ミラー データベースを作成するシステムには、ミラー データベースを保持するのに十分な領域を備えたディスク ドライブが必要です。

制限事項と制約事項

  • master、 msdb、 temp、および model の各システム データベースはミラー化できません。

  • Always On 可用性グループに属しているデータベースはミラー化できません。

推奨事項

  • プリンシパル データベースの最新の完全データベース バックアップまたは差分データベース バックアップを使用します。

  • ログ バックアップ ジョブをプリンシパル データベースで非常に頻繁に実行するようにスケジュールすると、ミラーリングが開始されるまでバックアップ ジョブを無効にする必要が生じる場合があります。

  • 可能であれば、ミラー データベースのパス (ドライブ文字を含む) を、プリンシパル データベースと同一のパスにします。

    ファイル パスが異なる必要がある場合 (たとえば、プリンシパル データベースがドライブ 'F:' にあり、ミラー システムに F: ドライブがない場合)、 RESTORE ステートメントに MOVE オプションを含める必要があります。

    重要

    ミラーリングセッション中にセッションに影響を与えずにファイルを追加するには、ファイルのパスが両方のサーバーに存在する必要があります。 したがって、ミラー データベースの作成時にデータベース ファイルを移動し、その後でミラー データベースにファイルを追加しようとした場合、ファイルの追加操作が失敗し、ミラーリングが中断されることがあります。 ファイル作成操作の失敗に対処する方法については、「データベース ミラーリング構成のトラブルシューティング (SQL Server)」を参照してください。

  • プリンシパル データベースにフルテキスト カタログが含まれている場合は、「データベース ミラーリングとフルテキスト カタログ (SQL Server)」を参照することをお勧めします。

  • 運用データベースを使用する場合は、必ず別のデバイスにバックアップしてください。

セキュリティ

データベースがバックアップされている場合、TRUSTWORTHY は OFF に設定されます。 したがって、新しいミラー データベースでは TRUSTWORTHY は常に OFF です。 フェールオーバー後にデータベースを信頼可能にする必要がある場合は、追加の設定作業が必要です。 詳細については、「Trustworthy プロパティを使用するようにミラー データベースを設定する (Transact-SQL)」を参照してください。

データベース マスター キーの自動暗号化解除を有効にする方法については、「 暗号化されたミラー データベースの設定」を参照してください。

アクセス許可

データベース所有者またはシステム管理者。

ミラーリングを再開するために既存のミラー データベースを準備するには

ミラーリングを削除してもミラー データベースが RECOVERING 状態のままである場合、ミラーリングを再開することができます。

  1. プリンシパル データベースで 1 つ以上のログ バックアップを作成します。 詳細については、トランザクション ログのバックアップ (SQL Server) に関するページを参照してください。

  2. ミラー データベースで、 RESTORE WITH NORECOVERY を使用して、ミラーリングが削除された後にプリンシパル データベースで作成されたすべてのログ バックアップを復元します。 詳細については、「トランザクション ログ バックアップの復元 (SQL Server)」を参照してください。

新しいミラー データベースを準備するには

ミラー データベースを準備するには

注

この手順の Transact-SQL の例については、このセクションの後半の「例 (Transact-SQL)」を参照してください。

  1. プリンシパル サーバー インスタンスに接続します。

  2. プリンシパル データベースの完全バックアップまたは差分バックアップのいずれかを作成します。

  3. 通常、プリンシパル データベースで 1 つ以上のログ バックアップを作成する必要があります。 ただし、データベースを作成したばかりでログ バックアップがまだ作成されていない場合や、復旧モデルを SIMPLE から FULL に変更したばかりの場合など、ログ バックアップが不要な場合もあります。

  4. 両方のシステムからアクセスできるネットワーク ドライブにバックアップがある場合を除いて、データベース バックアップとログ バックアップは、ミラー サーバー インスタンスをホストするシステムにコピーします。

  5. ミラー サーバー インスタンスに接続します。

  6. RESTORE WITH NORECOVERY を使用して、データベースの完全バックアップと、必要に応じて最新の差分データベース バックアップをミラー サーバー インスタンスに復元して、ミラー データベースを作成します。

    注

    データベースのファイル グループをファイル グループごとに復元する場合は、必ずデータベース全体を復元してください。

  7. RESTORE WITH NORECOVERY を使用して、未処理のログ バックアップまたはバックアップをミラー データベースに適用します。

例 (Transact-SQL)

データベース ミラーリング セッションを開始する前に、ミラー データベースを作成する必要があります。 これは、ミラーリング セッションを開始する直前に行ってください。

この例では、既定で単純復旧モデルを使用する AdventureWorks2025 サンプル データベースを使用します。

  1. AdventureWorks2025 データベースでデータベース ミラーリングを使用するには、完全復旧モデルが使用されるように変更します。

    USE master;  
    GO  
    ALTER DATABASE AdventureWorks   
    SET RECOVERY FULL;  
    GO  
    
  2. データベースの復旧モデルを SIMPLE から FULL へ変更した後は、完全バックアップを作成します。作成した完全バックアップはミラー データベースの作成に使用できます。 復旧モデルを変更した直後なので、新しいメディア セットを作成するには WITH FORMAT オプションを指定します。 これにより、完全復旧モデルのバックアップを、単純復旧モデルで作成された以前のバックアップと分離できます。 この例では、バックアップ ファイル (C:\AdventureWorks.bak) をデータベースと同じドライブに作成します。

    注

    運用データベースを使用する場合は、必ず別のデバイスにバックアップしてください。

    プリンシパル サーバー インスタンス ( PARTNERHOST1) で、次のようにプリンシパル データベースの完全バックアップを作成します。

    BACKUP DATABASE AdventureWorks   
        TO DISK = 'C:\AdventureWorks.bak'   
        WITH FORMAT  
    GO  
    
  3. 完全バックアップをミラー サーバーにコピーします。

  4. RESTORE WITH NORECOVERY を使用して、完全バックアップをミラー サーバー インスタンスに復元します。 復元コマンドは、プリンシパル データベースとミラー データベースのパスが同じかどうかによって変わります。

    • パスが同じ場合は、次のようにします。

      ミラー サーバー インスタンス ( PARTNERHOST5) で、次のように完全バックアップを復元します。

      RESTORE DATABASE AdventureWorks   
          FROM DISK = 'C:\AdventureWorks.bak'   
          WITH NORECOVERY  
      GO  
      
    • パスが異なる場合は、次のようにします。

      ミラー データベースのパスがプリンシパル データベースのパスと異なる (たとえば、ドライブ文字が異なる) 場合、ミラー データベースを作成するには、復元操作に MOVE 句が必要です。

      重要

      プリンシパル データベースとミラー データベースのパス名が異なる場合は、ファイルを追加することはできません。 これは、ミラーリング サーバー インスタンスでファイル追加操作のログが受信されると、プリンシパル データベースで使用される場所に新しいファイルの追加が試行されるためです。

      たとえば、次のコマンドは、C:\Program Files\Microsoft SQL Server\MSSQL に存在するプリンシパル データベースのバックアップを復元します。別の場所の n\MSSQL\Data\ (D:\Program Files\Microsoft SQL Server\MSSQL)。ミラー データベースが存在する n\MSSQL\Data。

      RESTORE DATABASE AdventureWorks  
         FROM DISK='C:\AdventureWorks.bak'  
         WITH NORECOVERY,   
            MOVE 'AdventureWorks_Data' TO   
               'D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\AdventureWorks_Data.mdf',   
            MOVE 'AdventureWorks_Log' TO  
               'D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\AdventureWorks_Log.ldf';  
      GO  
      
  5. 完全バックアップを作成した後、プリンシパル データベースでログ バックアップを作成する必要があります。 たとえば、次の Transact-SQL ステートメントでは、前回の完全バックアップで使用したものと同じファイルにログをバックアップします。

    BACKUP LOG AdventureWorks   
        TO DISK = 'C:\AdventureWorks.bak'   
    GO  
    
  6. ミラーリングを開始する前に、必要なログ バックアップ (および、それ以降のログ バックアップ) を適用する必要があります。

    たとえば、次の Transact-SQL ステートメントでは、最初のログを C:\AdventureWorks.bak から復元します。

    RESTORE LOG AdventureWorks   
        FROM DISK = 'C:\AdventureWorks.bak'   
        WITH FILE=1, NORECOVERY  
    GO  
    
  7. ミラーリングを開始する前に追加のログ バックアップが作成された場合は、それらのログ バックアップもすべて復元する必要があります。すべてのログ バックアップを順番に、WITH NORECOVERY を使用して、ミラー サーバーに復元します。

    たとえば、次の Transact-SQL ステートメントでは、2 つの追加のログを C:\AdventureWorks.bak から復元します。

    RESTORE LOG AdventureWorks   
        FROM DISK = 'C:\AdventureWorks.bak'   
        WITH FILE=2, NORECOVERY  
    GO  
    RESTORE LOG AdventureWorks   
        FROM DISK = 'C:\AdventureWorks.bak'   
        WITH FILE=3, NORECOVERY  
    GO  
    

データベース ミラーリングの設定、セキュリティの設定の表示、ミラー データベースの準備、パートナーの設定、ミラーリング監視サーバーの追加をすべて含む例については、「データベース ミラーリングの設定 (SQL Server)」を参照してください。

補足情報: ミラー データベースを準備した後

  1. 最新の RESTORE LOG 操作以降に追加のログ バックアップが作成された場合は、 RESTORE WITH NORECOVERY を使用して、追加のログ バックアップをすべて手動で適用する必要があります。

  2. ミラーリング セッションを再開します。 詳細については、Windows 認証を使用したデータベース ミラーリング セッションの確立 (SQL Server Management Studio) に関するページ、または Windows 認証を使用したデータベース ミラーリング セッションの確立 (Transact-SQL) に関するページを参照してください。

  3. プリンシパル データベースのバックアップ ジョブを無効にする場合は、ジョブを再度有効にします。

  4. フェールオーバー後にデータベースを信頼可能にする必要がある場合は、ミラーリングを開始した後で追加の設定が必要です。 詳細については、「Trustworthy プロパティを使用するようにミラー データベースを設定する (Transact-SQL)」を参照してください。

関連タスク