5

SELECTSQLServerデータベースでクエリを実行するSqlCommandを介してアプリケーションにフェッチされているデータのリストがいくつかあります。SqlCommandでトランザクションを明示的に設定するのではなく、SqlConnectionを渡して実行するだけです。ReadCommittedトランザクションが指定されていない場合、SQL ServerはデフォルトのIsolationLevelが?のデフォルトのトランザクションを開始して使用します。

4

2 に答える 2

8

SQL はステートメントに対して暗黙的にトランザクションを作成し、このトランザクションはステートメントが完了するとコミットされます。このトランザクションの分離レベルは現在の分離レベルになり、デフォルトは READ COMMITTED になります。特定のステートメントは、現在の分離レベルを上書きし、READ COMMITTED を強制します (例: RECEIVE)。

SqlCommand がバッチ (複数のステートメント) を実行する場合、テーブルにアクセスする各ステートメントは独自のトランザクションを作成します。

トランザクションのデフォルトの自動コミットは、SET IMPLICIT_TRANSACTION ON を変更することによって制御されます。

詳細については、トランザクションの制御を参照してください。

于 2009-06-19T09:52:13.633 に答える
3

SQL Server は、明示的なトランザクションがなくても問題なく動作します。UPDLOCKしかし、はい、それは本質的に読み取りコミットされていると思います(もちろん、 /などのクエリオブジェクトに追加のヒントを追加しない限りNOLOCK)。これは次の方法で調査できます。

DBCC USEROPTIONS

(とりわけ)を示しています:

isolation level read committed
于 2009-06-19T09:25:22.300 に答える