ログ末尾のバックアップ
更新 : 2006 年 7 月 17 日
このトピックは、完全復旧モデルまたは一括ログ復旧モデルを使用するデータベースのみに関連しています。
SQL Server 2005 で完全復旧モデルまたは一括ログ復旧モデルを使用するほとんどの場合、まだバックアップされていないログ レコードをキャプチャするため、ログの末尾をバックアップする必要があります。復元操作直前のログの末尾から取ったログ バックアップをログ末尾のバックアップといいます。
SQL Server 2005 では通常、データベースの復元を開始する前に、ログ末尾のバックアップを取る必要があります。ログ末尾のバックアップを取ることで、作業の損失を防ぎ、ログ チェーンを完全な状態で保持することができます。データベースを障害発生時点に復旧するとき、ログ末尾のバックアップは復旧計画の対象になる最後のバックアップです。ログの末尾をバックアップできない場合、障害の前に作成した最後のバックアップの末尾までしかデータベースを復旧できません。
ログ末尾のバックアップは、すべての復元シナリオで必要となるわけではありません。復元ポイントが以前のログ バックアップに含まれている場合、またはデータベースを移動するか置き換えて (上書きして) いる場合、ログ末尾のバックアップは不要です。また、ログ ファイルが破損し、ログ末尾のバックアップを作成できない場合、ログ末尾のバックアップを使用することなくデータベースを復元する必要があります。最新のログ バックアップの後にコミットされたトランザクションは失われます。詳細については、後の「ログ末尾のバックアップを使用しない復元」を参照してください。
ログの末尾のバックアップ
他のログ バックアップと同様、ログ末尾のバックアップを取るには BACKUP LOG ステートメントを使用します。以下に示す状況では、ログ末尾のバックアップをお勧めします。
- データベースがオンラインで、復元シーケンスを開始する前であれば、データベースに復元操作を実行する直前に WITH NORECOVERY を使用してログの末尾をバックアップします。
BACKUP LOG database_name TO <backup_device> WITH NORECOVERYメモ : エラーを回避するため、NORECOVERY オプションを必ず指定します。 - データベースがオフラインであり、開始していない場合。
ログ末尾のバックアップを行います。このとき、トランザクションは発生しないので、WITH NORECOVERY の指定は省略できます。データベースが破損している場合、WITH CONTINUE_AFTER_ERROR または WITH NO_TRUNCATE のいずれかを使用します。
BACKUP LOG database_name TO <backup_device> [WITH { CONTINUE_AFTER_ERROR | NO_TRUNCATE }重要 : データベースが破損している場合を除き、NO_TRUNCATE を使用しないことをお勧めします。
次の表に、これらのオプションを要約します。
BACKUP LOG オプション
コメント
NORECOVERY
データベースの復元操作を続行する場合は、必ず NORECOVERY を使用します。NORECOVERY を指定すると、データベースは復元中の状態になります。これにより、ログ末尾のバックアップの後にデータベースが変化しないことが保障されます。
これと併せて、NO_TRUNCATE オプションまたは COPY_ONLY オプションを指定しない限り、ログは切り捨てられます。
{ CONTINUE_AFTER_ERROR | NO_TRUNCATE }
破損したデータベースの末尾をバックアップする場合に限り、NO_TRUNCATE または CONTINUE_AFTER_ERROR を使用します。
メモ :
破損したデータベースにログ末尾のバックアップを適用する場合、通常であればログ バックアップにキャプチャされるメタデータの一部を使用できない場合があります。詳細については、後の「不完全なバックアップ メタデータが含まれたログ末尾のバックアップ」を参照してください。
データベースが損傷したときにトランザクション ログのバックアップを作成するには
- データベースが損傷したときにトランザクション ログをバックアップする方法 (Transact-SQL)
- トランザクション ログをバックアップする方法 (SQL Server Management Studio)
不完全なバックアップ メタデータが含まれたログ末尾のバックアップ
データベースがオフラインである場合、データベースが破損している場合、またはデータ ファイルが欠落している場合でも、ログ末尾のバックアップではログの末尾がキャプチャされます。これが原因で、復元情報コマンドや msdb のメタデータが不完全になる場合があります。ただし、メタデータが不完全なだけで、キャプチャされたログは完全であり、使用できます。
ログ末尾のバックアップに不完全なメタデータが含まれている場合は、backupset テーブルの has_incomplete_metadata が 1 に設定されます。また、RESTORE HEADERONLY の出力で HasIncompleteMetadata が 1 に設定されます。
ログ末尾のバックアップのメタデータが不完全な場合、ログ末尾のバックアップ時に、ファイル グループに関する情報の大部分が backupfilegroup テーブルから欠落します。backupfilegroup テーブルのほとんどの列は NULL になり、意味を持つ列は次の列のみです。
- backup_set_id
- filegroup_id
- type
- type_desc
- is_readonly
ログ末尾のバックアップを使用しない復元
ログ末尾のバックアップを必要としない復元シナリオには、次のものがあります。
- 前のログ バックアップ内のある時点にデータベースを復元する。
データベースを復元するときに、復元シーケンスのすべての RESTORE ステートメントで STOPAT、STOPATMARK、STOPBEFOREMARK のいずれかのオプションを指定する場合、ログ末尾のバックアップは不要です。
前の時点にデータベースを復元するには- Transact-SQL を使用して特定の時点に復元するための詳細については、「特定の時点まで復元する方法 (Transact-SQL)」、「マークされたトランザクションへの復旧」、または「ログ シーケンス番号 (LSN) への復旧」を参照してください。
- SQL Server Management Studio を使用する場合の詳細については、「特定の時点まで復元する方法 (SQL Server Management Studio)」または「データベースをマークされたトランザクションに復元する方法 (SQL Server Management Studio)」を参照してください。
- データベースのコピーを新しい場所に復元する。
データベースを復元するときに、別のサーバー インスタンスにデータベースを復元する場合に限り、同じデータベース名を使用できます。たとえば、データベース ミラーリング用のミラー データベースや、ログ配布用のセカンダリ データベースを作成する場合です。同一のサーバー インスタンス上でデータベースを移動する場合、そのデータベースには新しい名前を指定する必要があります。
データベースを新しい場所に復元するには- Transact-SQL を使用して、復元シーケンスのすべての RESTORE ステートメントで MOVE オプションを指定します。詳細については、「新しい場所と名前でデータベースを復元する方法 (Transact-SQL)」または「ファイルを新しい場所に復元する方法 (Transact-SQL)」を参照してください。
- SQL Server Management Studio を使用して、[データベースの復元] ([オプション] ページ) の [復元先] で、各ファイルの新しい場所を指定します。詳細については、「データベースのバックアップを復元する方法 (SQL Server Management Studio)」を参照してください。
- データベースを完全に置き換える (上書きする)。
注意 : REPLACE オプションを使用した復元はほとんど使用されることはなく、熟練したデータベース管理者だけが十分な検討を経て使用するものです。詳細については、「REPLACE オプションの使用」を参照してください。
参照
概念
コピーのみのバックアップ
データベースの状態
トランザクション ログ バックアップの適用
トランザクション ログ バックアップの作成
その他の技術情報
ヘルプおよび情報
変更履歴
リリース | 履歴 |
---|---|
2006 年 7 月 17 日 |
|