条件
- サーバAとサーバBの2台のサーバがある
- SQLServer2000にはSP4が適用されている
手順確認
以下の手順を確認する。
- サーバAを使った業務を止める(データの更新が起きなくなる)
- サーバAからサーバBにデータベースを丸ごとコピーする
- サーバBを使って業務を行う
- サーバBを使った業務を止める(データの更新が起きなくなる)
- サーバBからサーバAへデータの差分コピーを行う
確認結果
そのものずばりのデータベースの差分バックアップとトランザクションログを使った差分バックアップの2つの方法があった。諸事情でトランザクションログを使う方法を採用しました。SQLServeに備わっている差分バックアップ機能が使いたいのであれば、下の参考URLにある別の記事を参照してください。
トランザクションログを使った差分バックアップの概要
差分はトランザクションログとして記録されている。従って、トランザクションログのリストアをすれば差分バックアップ・リストアが実現できる。
また、あるタイミングでトランザクションログを切り捨てる操作を行うと、トランザクションログが空になる。そして、切り捨てた後のDB編集履歴がトランザクションログに溜まっていく。
手順に従った具体的な方法
- 「2. サーバAからサーバBにデータベースを丸ごとコピー」する前にサーバAのトランザクションログを切り捨てておきます。
backup log Northwind to disk='C:\temp\Northwind_ServerA_transactionlog' with init
with init
はファイルを上書きするという設定。
これで、C:\temp\Northwind_ServerA_transactionlog
というトランザクションログファイルが生成されます。また、ファイルに書き出した後でトランザクションログは自動的に切り捨てられます。 - 「5. サーバBからサーバAへデータの差分コピーを行う」でサーバBの差分バックアップファイルを作成します。
backup log Northwind to disk='C:\temp\Northwind_ServerB_transactionlog' with init
これで、
C:\temp\Northwind_ServerB_transactionlog
というトランザクションログファイル(=差分バックアップファイル)が生成されます。 - 先ほど作成した差分バックアップファイルをサーバAへコピーします。
- 差分バックアップファイルをサーバAへリストアします。
restore log Northwind from disk='c:\temp\Northwind_ServerB_transactionlog' with recovery
with recovery
は最後の差分バックアップファイルを適用し終わったたという意味。複数の差分バックアップファイルを適用するにはwith norecovery
を指定して何回もrestore log
すればよいです。
また、差分を適用するには差分開始前のデータベース内容がサーバAとサーバBで一致している必要があります。