ウォーム スタンバイ サーバーの設定、管理、およびオンラインへの切り替えを行う方法 (Transact-SQL)

スタンバイ サーバーの設定には、プライマリ サーバーで完全バックアップと定期的なトランザクション ログ バックアップを作成し、これらのバックアップをスタンバイ サーバーに順番に適用する作業が含まれます。復元操作の終了後、次の復元操作が開始されるまでの間は、スタンバイ サーバーは読み取り専用の状態になっています。スタンバイ サーバーを運用サーバーとして使用するには、アクティブなトランザクション ログのバックアップを含む未適用のすべてのトランザクション ログ バックアップをプライマリ サーバーからスタンバイ サーバーに適用し、データベースを復旧する必要があります。

プライマリ サーバーでバックアップを作成するには

  1. BACKUP DATABASE ステートメントを実行して、完全バックアップを作成します。

  2. BACKUP LOG ステートメントを実行して、トランザクション ログ バックアップを作成します。

  3. 作成する各トランザクション ログに対して、手順 2. を適宜繰り返します。

スタンバイ サーバーを設定および管理するには

  1. NORECOVERY 句を指定した RESTORE DATABASE ステートメントを実行して、プライマリ サーバーでの手順 1. で作成した完全バックアップを復元します。

  2. STANDBY 句を指定した RESTORE LOG ステートメントを実行して、プライマリ サーバーでの手順 2. で作成した各トランザクション ログを適用します。データ ページに影響を与える未コミットのトランザクションをロールバックする前の、データ ページの内容が含まれている UNDO ファイルの名前を指定します。

    ms178034.note(ja-jp,SQL.90).gifメモ :
    パフォーマンスを向上させるには、複数のログを適用するときに WITH NORECOVERY を使用する必要があります。プリンシパル サーバーがオフラインになったときに使用できるように、読み取り専用のフェールオーバー コピーとしてスタンバイ ファイルが必要になる場合もあります。
  3. プライマリ サーバーで作成した各トランザクション ログに対して、手順 2. を繰り返します。

スタンバイ サーバーをオンラインにするには (プライマリ サーバーの障害発生時)

  1. 可能であれば、現在アクティブなトランザクション ログ (ログの末尾) をバックアップします。データベースを正常に起動できないときにログ末尾のバックアップを作成するには、プライマリ データベースで WITH NO_TRUNCATE を指定して BACKUP LOG ステートメントを実行します。このトランザクション ログ バックアップは、スタンバイ サーバーをオンラインにするときにスタンバイ サーバーに適用する最後のバックアップになります。詳細については、「トランザクション ログ バックアップを作成する方法 (Transact-SQL)」を参照してください。

  2. STANDBY 句を指定した RESTORE LOG ステートメントを実行して、手順 1. で作成したアクティブなトランザクション ログ バックアップを含む、スタンバイ サーバーに未適用のすべてのトランザクション ログ バックアップを適用します。

    ms178034.note(ja-jp,SQL.90).gifメモ :
    パフォーマンを向上させるには、複数のログを適用するときに WITH NORECOVERY を使用する必要があります。WITH STANDBY および WITH NORECOVERY を使用する場合の例については、下記を参照してください。
  3. RESTORE DATABASE WITH RECOVERY ステートメントを実行して、データベースを復旧し、スタンバイ サーバーを起動します。

使用例

この例では、スタンバイ サーバーの MyAdvWorks データベースを起動します。復元操作と復元操作の間は、データベースを読み取り専用モードで使用できます。

-- Restore the initial full backup on the standby server.
USE master
GO
RESTORE DATABASE MyAdvWorks
   FROM MyAdvWorks_1 
   WITH STANDBY = 'c:\undo.ldf'
GO
-- Apply the first transaction log backup.
RESTORE LOG MyAdvWorks
   FROM MyAdvWorks_log1
   WITH STANDBY = 'c:\undo.ldf'
GO
-- Apply the next transaction log backup.
RESTORE LOG MyAdvWorks
   FROM MyAdvWorks_log2
   WITH STANDBY = 'c:\undo.ldf'
GO
-- Repeat for each transaction log backup created on the 
-- primary server.
--
-- Time elapses.. .. ..
--
-- The primary server has failed. Back up the 
-- tail of the transaction log on the primary server.
BACKUP LOG MyAdvWorks
   TO MyAdvWorks_log3
   WITH NO_TRUNCATE
GO
-- Apply the final (active) transaction log backup
-- to the standby server. All preceding transaction
-- log backups must have been already applied.
RESTORE LOG MyAdvWorks
   FROM MyAdvWorks_log3
   WITH NORECOVERY ''
GO
-- Recover the database on the standby server, 
-- making it available for normal operations.
RESTORE DATABASE MyAdvWorks
   WITH RECOVERY
GO

参照

処理手順

データベースが損傷したときにトランザクション ログをバックアップする方法 (Transact-SQL)

概念

ウォーム スタンバイ サーバーの使用

その他の技術情報

RESTORE (Transact-SQL)
バックアップ内の特定の時点へのデータベースの復元
SQL Server Management Studio のチュートリアル

ヘルプおよび情報

SQL Server 2005 の参考資料の入手