By: Atif Shehzad|更新しました。 2009-06-15 | コメント(4) : 関連しています。 その他 > バックアップ
問題
SQL Server データベースのバックアップ計画を実施しました。 私は毎日フルバックアップを取り、毎時間の差分バックアップをサポートします。 復元計画は、このバックアップ計画に基づいて、計画に記載されているバックアップの場所と時間に基づいて文書化されています。 テストサーバーや開発サーバーを本番環境のデータベースの最新コピーで更新する必要があることもよくあります。 この目的のために、私は必要なデータベースのフルバックアップを取ります。 問題は、このようなアドホックバックアップは、必要なリカバリの場合に、私の計画されたリカバリシーケンスを中断することです。 その場しのぎのバックアップがバックアップ計画の順序を中断しないようにする方法はありますか。
Solution
幸いにも、SQL Server 2005 以降では、そのような状況に対応するバックアップ オプションがあります。 このバックアップ オプションは、コピー専用バックアップとして知られています。 このオプションは、特に、そのデータベースの計画された復元順序を妨げないように、その場しのぎのバックアップを作成するためのものです。
Copy Only backups は、フル バックアップまたはトランザクション ログ バックアップを作成するために使用できます。 このオプションは、差分バックアップには実装されていません。 実用的なシナリオでは、コピー専用ログ バックアップを作成する必要はほとんどありませんが、コピー専用オプションはフル バックアップで頻繁に使用される可能性があります。 SSMS 2008 を使用している場合は、GUI を使用するか、コピー専用バックアップを作成するために T-SQL 文を使用しなければなりません。
最初に、SSMS 2008 を使用してコピー専用バックアップを作成する方法を見てみましょう。
- 通常のバックアップと同様に、バックアップ データベース ウィンドウに移動します。 のチェックボックスをクリックします
- 通常のバックアップと同様に、その他の関連情報を入力し、[OK]をクリックします
注意。 Copy Only Backup]のチェックボックスは差分バックアップでも有効になりますが、通常の差分バックアップを作成する以外には何の影響もありません。
2 番目に、T-SQL でコピー専用バックアップを作成するには、次のコマンドを発行します。
-- Create full backup with Copy Only optionBACKUP DATABASE AdventureWorks TO DISK = 'D:\WithoutCopyOnly_AdventureWorks.bak'WITH COPY_ONLYGO
概念の証明
先に進む前に、コピー専用オプションでの完全バックアップは他の通常のバックアップのシーケンスとは独立しているという概念をまとめておくとよいでしょう。したがって、コピーのみオプションでバックアップを作成した後、復元プロセスに影響を与えることなく、スケジュールされたバックアップに基づいてリカバリ プランで作業することができます。
--Script # 1: Note current differential base LSNSELECT DB_NAME(database_id) AS ,differential_base_lsn AS 'Note differential base LSN'FROM sys.master_filesWHERE database_id = DB_ID('AdventureWorks')AND type_desc = 'ROWS'GO
The differential_base_lsn affects the sequence in which combination of backups are to be restored in a recovery.まず、AdventureWorksデータベースの差分ベースのLSNを記録します。 msdb.backupset.
ここで、コピー専用オプションなしのフルバックアップが differential_base_lsn を更新することを確認する必要があります。 この目的のために、Copy Only オプションなしでフル バックアップ コマンドを発行し、更新された差分ベース LSN が最後のフル バックアップの LSN であることを証明するために LSN の変更に注意します。 以下の両方のマークされた LSN は同じであり、最後のバックアップが差分ベースであることを確認します。
次に、コピー専用オプションでフル バックアップを作成します。 言い換えれば、Copy Onlyオプションによるフルバックアップは、差分バックアップのためのベースフルバックアップに影響を与えません。
--Script # 3: Create full backup with copy only option and compare LSN information-- Create full backup with copy only option-- Run script after changing Backup pathBACKUP DATABASE AdventureWorks TO DISK = 'D:\CopyOnly_AdventureWorks.bak'WITH COPY_ONLYGO-- Get differential_base_lsn after full backup with copy only optionSELECT DB_NAME(database_id) AS ,differential_base_lsn AS 'Un changed differential base LSN'FROM sys.master_filesWHERE database_id = DB_ID('AdventureWorks')AND type_desc = 'ROWS'GO-- Get LSN of recent full backup with copy only option for match purposeSELECT database_name, backup_start_date, is_copy_only,first_lsn as 'LSN of last full bakup'FROM msdb..backupset WHERE database_name = 'AdventureWorks'ORDER BY backup_start_date DESCGO
次のイメージでは、Copy Only オプションでのフル バックアップの後、差分ベース LSN は変更されず、以前のフル バックアップの LSN と一致していることが検証できます (両方とも赤で表示されます)。 また、Copy Only オプションを使用した最後のフルバックアップも存在することに注意してください (緑でマーク)。
Copy Only オプションを使用したバックアップでは、次の考慮事項が役に立ちます。
- Copy Onlyオプションは、SQL Server 2005インスタンスの互換性レベル80のデータベースでも機能します。
- Copy Onlyオプションによるトランザクションログのバックアップは、既存のログアーカイブ点を維持するため、そのデータベースのトランザクションログを切り捨てません。
- Copy Onlyオプションによるフルバックアップは、差分バックアップのリストアのベースとして使用できません。
- Copy Onlyオプションによるログバックアップは、回復モデルがフルまたはバルクログのみのデータベースに対して作成されることがあります。
- コピー専用オプションのフルバックアップは、任意のリカバリモデルを持つデータベースに対して作成される場合があります。 コピー専用バックアップは通常のバックアップとは独立していることを念頭に置いてください。
- ですから、テストまたは開発環境をリフレッシュする必要がある場合は、コピー専用オプションを使用してリカバリ プロセスを中断しないように検討してください。
- For information about database recovery models clickhere or here
- Here is related tip aboutコピー専用バックアップ
Last Updated: 2009-06-15
著者について
アティフ シェザード は熱心な SQL Server DBA、技術評論家で記事の著者でもあります。
私のヒントをすべて見る関連リソース- More SQL Server DBA Tips…