アプリ版:「スタンプのみでお礼する」機能のリリースについて

SQL Server2005で
DBアクセスをするツールがあり、不定期なタイミングで
Insertや、Update、Deleteが発生します。

このツールを動作中に別ツールでBACKUP DATABASEで
DB内の全データのバックアップを行いたいのですが、
Insert(Commit)などのタイミングと重なった場合
どうなるのでしょうか?

一番気がかりなのはバックアップしたデータに不整合が
発生しないかという点です。

A 回答 (3件)

SQL Server は データ更新中のバックアップが可能です。



バックアップの内容はバックアップが完了した時点の
DB状態がバックアップされていることになります。
(バックアップ完了時点で、コミットされていれば、
バックアップはされています。)

DBの不整合はアプリの異常終了等でも発生します。
不整合は、2フェーズコミットで減らすことができます。
    • good
    • 1

>バックアップが走っている間は他からのINSERTなどは


>バックアップが終了するまで待つという事ですよね。
 マルチスレッドプロセスなのでほとんど同時に(内部的には瞬時に切り替えていますが、)I/Oの許す範囲で行います。とは言え普通は書き込みの方が優先されるでしょう。例えばあるスレッドがある記憶範囲(メモリなど)を書き込み中に他のスレッドが同じ記憶範囲を読み込んだとしたらそのデータは不整合(ダーティ)になるでしょう。これが描画モジュールだとしたらでたらめな文字が表示されるということです。
 この辺りのことはMSSQL・・2000 2005 2008 と進化してきて
メモリ障害等に対してもデータの整合性が保てるようになっています。
 それとアプリ側で一連の処理は普通トランザクションを使用していると
考えられます。心配でしたら他のマシンで復元して確認してみてください。健闘を祈ります。
    • good
    • 0

SqlServer等の業務用DBはログ先行書き込みと言う技法が用いられており、コミットされていないトランザクションは障害復旧時ロールバックされます。

夜間一括でバックアップを行い、昼間はログのみ1~30分単位とかでバックアップすれば良いと思います。

insert()の場合autocommitですが、仮にcommitされていなくても次の30分後のログバックアップさえ成功すれば整合性に問題はないということです。

参考URL:http://technet.microsoft.com/ja-jp/library/aa337 …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

バックアップが走っている間は他からのINSERTなどは
バックアップが終了するまで待つという事ですよね。

INSERT処理の途中でバックアップが走るとどうなるのですか
たとえばAとBにinsertする処理があって
AにINSERTした後にバックアップ処理が走った場合、
バックアップが終わってからBが走るという具合ですか

お礼日時:2007/10/11 10:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!