2017-09-12 4 views
0

私のアプリケーションは、これらの呼び出しの間に、分離レベルがSerializableに変更されているように見える複数のSPを呼び出しています。私はコードを調べて、分離レベルをどこにも設定していません。 SQL接続プールがこのレベルを設定しているかどうかを知ることは可能ですか?IsolationLevelを変更しているトランザクションを見つける

私はMS SQL 2008 R2を使用しています。

SQLプロファイラを実行すると、分離が変更されたことがわかります。呼び出されたSPはそれを変更していません。分離レベルが指定されていないので、SQL接続プールは使用するレベルを決定していますが、それを設定していませんか?

Audit Login -- network protocol: LPC 
set quoted_identifier on 
set arithabort on 
set numeric_roundabort off 
set ansi_warnings on 
set ansi_padding on 
set ansi_nulls on 
set concat_null_yields_null on 
set cursor_close_on_commit off 
set implicit_transactions off 
set language us_english 
set dateformat mdy 
set datefirst 7 
set transaction isolation level serializable 
+0

アプリでEntity Frameworkを使用していますか?私は、デフォルトとしてSerializableを使用した問題にぶつかりました。それは(少なくとも私にとって)驚くべきことでした。 –

+0

ベン、SqlCommandを使用しています。 – SoothingMusic

答えて

2

再利用されたプール接続は、トランザクション分離レベルを変更しません。

おそらくTransactionScopeを使用しています。 The default isolation level with TransactionScope is serializableを指定します。

+0

ありがとうございました。コードでは、(var trans = new TransactionScope(TransactionScopeOption.RequiresNew))を使用しています。これが犯人かもしれないように見える – SoothingMusic

関連する問題