ミラーリング用のミラー データベースを準備する方法 (Transact-SQL)

データベース ミラーリング セッションを開始するには、ミラー データベースが存在している必要があります。ミラー データベースの名前は、プリンシパル データベースと同じ名前にする必要があります。データベース所有者またはシステム管理者は、プリンシパル データベースの最新の完全バックアップとそれ以降の少なくとも 1 つのログ バックアップからミラー データベースを作成できます。ミラーリングが機能するためには、ミラー データベースが RESTORING 状態のままになっている必要があります。したがって、バックアップをミラー データベースに復元する際には、すべての復元操作で常に WITH NORECOVERY を使用する必要があります。

ミラーリングを削除してもミラー データベースが RECOVERING 状態のままである場合、ミラーリングを再開することができます。ただし、先に 1 つ以上のログ バックアップをプリンシパル データベースで作成する必要があります。その後、ミラー データベースで、WITH NORECOVERY を使用して、ミラーリングの削除後にプリンシパル データベースで作成されたすべてのログ バックアップを復元する必要があります。

注意

mastermsdbtempdbmodel の各システム データベースはミラー化できません。

手順

データベース ミラーリング用のデータベースを作成するには

  1. プリンシパル サーバーとミラー サーバーの両方のインスタンスに Microsoft SQL Server 2008 がインストールされていることを確認します。

  2. データベースで完全復旧モデルを使用していることを確認します。

    詳細については、「データベースの復旧モデルを表示または変更する方法 (SQL Server Management Studio)」または「sys.databases (Transact-SQL)」と「ALTER DATABASE (Transact-SQL)」を参照してください。

  3. プリンシパル データベースの完全バックアップを行います。

    詳細については、「データベースをバックアップする方法 (SQL Server Management Studio)」または「データベースの完全バックアップを作成する方法 (Transact-SQL)」を参照してください。

    注意

    代わりに、既存のデータベースの完全バックアップとデータベースの差分バックアップ (必要な場合) を復元し、その後で後続のすべてのログ バックアップを復元することもできます。

  4. ミラー データベースを作成するシステムのディスク ドライブに、データベースを保持するのに十分な空き領域があることを確認します。

  5. 両方のシステムからアクセスできるネットワーク ドライブにバックアップがある場合以外は、データベースのバックアップをそのシステムにコピーします。

  6. ミラー データベースを作成するには、データベースの完全バックアップをミラー サーバーのインスタンスに復元します。RESTORE DATABASE database_name ステートメントでは、WITH NORECOVERY を指定する必要があります (database_name はミラー化するデータベースの名前です)。

    注意

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

    また、可能であれば、ミラー データベースのパス (ドライブ文字を含む) を、プリンシパル データベースと同一のパスにすることが推奨されています。

    ファイルのレイアウトが異なる場合、たとえば、プリンシパル データベースが "F:" ドライブに存在する一方で、ミラー システムには "F:" ドライブがない場合には、RESTORE ステートメントに MOVE オプションを含める必要があります。

    重要な注意事項重要

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

    詳細については、「RESTORE (Transact-SQL)」および「RESTORE の引数 (Transact-SQL)」を参照してください。

  7. 通常は、少なくとも 1 つのログ バックアップをプリンシパル データベースで作成し、ミラー サーバーにコピーして、ミラー データベースで復元する必要があります (WITH NORECOVERY を使用します)。ただし、データベースを作成したばかりでログ バックアップがまだ作成されていない場合や、復旧モデルを SIMPLE から FULL に変更したばかりの場合など、ログ バックアップが不要な場合もあります。

    ログ バックアップをミラー データベースに適用するには、ミラー サーバーで SQL Server または Transact-SQL を使用します。

  8. 必要なログ バックアップ以降にプリンシパル データベースに対して追加のログ バックアップを作成した場合は、こそれらのログ バックアップもミラー サーバーにコピーして、それぞれミラー データベースに適用する必要があります。その際には古いものから順に適用し、毎回 WITH NORECOVERY を使用します。

セキュリティに関する注意セキュリティに関する注意

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

重要な注意事項重要

データベース ミラーリングが停止している場合にミラーリングを再開するには、停止後にプリンシパル データベースで作成されたすべてのログ バックアップをミラー データベースに適用する必要があります。

使用例

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

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

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

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

    注意

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

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

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

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

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

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

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

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

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

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

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

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

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