2016-03-01 32 views
5

私は初心者です。ネット。次のエラーが発生しましたEnlist = falseはSQL Serverの接続文字列を意味しますか?

"このトランザクションで作業中の保留中の要求があるため、トランザクション処理を実行できません。"

私はenlist=trueと私の接​​続文字列を付加し.Iブログのどこかで読んで、問題が解決されました。

:DBをSQL Server 2005からSQL Server 2008R2にアップグレードしています。

enlistを使用することの重要性を理解するのを助けてください。

答えて

7

入隊は、トランザクションがアクティブであると判断した場合、Connectionオブジェクトは自動的に既存の 分散トランザクションに参加しますDistributed Transaction

ためのユーザです。 自動取引参加は、接続が開かれたとき( )、または接続プールから取得されたときに発生します。 Enlist=falseを接続とし​​て SqlConnectionの文字列パラメータ、またはOLE DB Services = -7としてOleDbConnectionの接続文字列パラメータ として指定することで、既存のトランザクションでの自動登録 を無効にできます。

接続はEnlistDistributedTransactionを呼び出す前にopenでなければなりません。ここで

Enlist=False;

2

とあなたのための一例であるMSDNは言う:

ConnectionStringプロパティは、System.Data.SqlClientのがトランザクション コンテキストを検出し、かどうかを示す 、入隊を、キーワードをサポートしています分散型の トランザクションで自動的に接続を登録します。 Enlist = trueの場合の場合、開始スレッドの現在のトランザクションコンテキストに接続が自動的に登録されます( )。 Enlist = falseの場合, SqlClient接続は分散トランザクション と対話しません。 Enlistのデフォルト値はtrueです。接続文字列にEnlistが が指定されていない場合、 接続が開かれたときに接続が検出された場合、接続は自動的に が分散トランザクションに登録されます。

関連する問題