Microsoftoの無料のデータベースソフト、SQL server Expressでデータベースをバックアップする方法です。
昔のMSDEの場合、無料版では「BACKUP DATABASE」が使えませんでしたが、SQL server Expressになって、
使えるようになったようです。
ということで、SQL server Expressでインスタンスを停止することなくバックアップする方法、
また、バックアップファイルから復元する方法に関して記述します。
スポンサーリンク
SQL server Expressでインスタンスを停止することなくバックアップする方法
次のコマンドを実行するだけです。
バッチファイルでもできるでしょう。
BACKUP DATABASE [データベース名] TO DISK = N'バックアップファイルのパス' WITH INIT
バックアップ先のファイル名:C:\SampleDB.BAK
とすると、実際のコマンドはこうなります。
これは、データベース丸ごとバックアップする方法です。
一度全体バックアップをすると、次からは差分バックアップすることができます。
差分バックアップのコマンドはこちらです。
バックアップ先のファイル名:C:\SampleDB_DIFF.BAK
とすると、実際のコマンドはこうなります。
このときできるファイルは、前回の全体バックアップのときとの差分です。
なので、最終的な状態だけが必要ならば、次のように、
差分バックアップのファイルを分けてたくさん作る必要はありません。
差分バックアップ1:SampleDB_DIFF1.BAK
差分バックアップ2:SampleDB_DIFF2.BAK
差分バックアップ3:SampleDB_DIFF3.BAK
差分バックアップ4:SampleDB_DIFF4.BAK
差分バックアップ5:SampleDB_DIFF4.BAK
全体バックアップ:SampleDB.BAKと差分バックアップ5:SampleDB_DIFF4.BAK
があれば、最新の状態に復元することができます。
次に復元の方法に関して説明しますが、以下の2つのファイルだけある場合に関して解説します。
差分バックアップ:SampleDB_DIFF.BAK
SQL server Expressでバックアップファイルから元に戻す方法
まずは、次のコマンドで、全体バックアップから復元します。
データベースの状態が「復元しています」となってしまう場合は、NORECOVERYをRECOVERYに変更します。
差分ファイルがある場合、続いて次のコマンドを実行します。
例えば、SampleDB.BAKを毎日午前0時に作って、SampleDB_DIFF.BAKを5分ごとに作成しておけば、
トラブルがあっても、常に5分以内のバックアップが残っているということになります。
注意点
-同じデータベースがあれば、そのデータは消えて、復元されたものに置き換わります。
-復元するときは、全てのSQL server Expressに接続するソフトを停止し、「master」データベースに接続して行います。
そうしないと失敗します。
(失敗しても、中途半端なデータが出来るわけではありません。)