私は、コードがこのロールバックのタイムアウトが発生した場合、Sqlは暗黙のロールバックを行いますか?
try
{
mytrans = mycon.begintransaction();
//execute sql statements
mytrans.commit();
}
catch(Exception)
{
mytrans.rollback();
}
ようなもので問題は時々我々はロールバックでタイムアウト例外に直面し、私ということですtransactionaly的に文を削除
、更新、挿入のセットを実行DOTNETのapplicatonを持っていますデータベースサイズ(mdfファイル)が増加していることがわかりました。 これは、Sqlが暗黙のロールバックを行わないことを意味しますか?どうすればこのエラーから回復し、元の状態に戻ることができますか?
これは、コミットされていないトランザクションが暗黙的にロールバックされることを意味します。ロールバックメソッドの目的は何か –
はい、コミットされていないトランザクションは、DB接続がクローズされたとき(場合によってはタイムアウトによって)、暗黙的にロールバックされます。ロールバックメソッドのポイントは、ロールバックが技術的な問題ではなくプログラムロジックによって引き起こされる場合があるため、プログラムがこれを制御できるようにすることです。すなわち、プログラムがトランザクションを開始し、何らかの処理を行い、ロールバックすることを決定しますトランザクションと同じDB connectioncを使用して何か代わりに行う –
[OK]を私のロジックは、最初に私は現在のテーブルをhisoricalテーブルにシフトしているし、このシフト中にいくつかの処理を行う私は主キー違反の例外に直面してプログラムがロールバックしようとしたとタイムアウト例外が発生した後、特定の歴史的なテーブル!これは、SQLがロールバック(私はそうだと思う)に失敗したことを意味します –