what is Enlist=false means in connection string for sql server?

允我心安 提交于 2019-12-01 02:00:16

问题


I am a beginner with .net. I faced issue with the following error

"The transaction operation cannot be performed because there are pending requests working on this transaction.".

i read somewhere in the blog .i appended my connection string with enlist=true and the issue was resolved.

Note: i am upgrading my DB from sql server 2005 to sql server 2008R2.

Please help to understand the importance of using enlist.


回答1:


Enlisting is user for Distributed Transaction

The Connection object will automatically enlist in an existing distributed transaction if it determines that a transaction is active. Automatic transaction enlistment occurs when the connection is opened or retrieved from the connection pool. You can disable auto-enlistment in existing transactions by specifying Enlist=false as a connection string parameter for a SqlConnection, or OLE DB Services=-7 as a connection string parameter for an OleDbConnection.

Note The Connection must be open before calling EnlistDistributedTransaction.

Here is an example for you with Enlist=False;




回答2:


The MSDN says:

The ConnectionString property supports a keyword, Enlist, which indicates whether System.Data.SqlClient will detect transactional contexts and automatically enlist the connection in a distributed transaction. If Enlist=true, the connection is automatically enlisted in the opening thread's current transaction context. If Enlist=false, the SqlClient connection does not interact with a distributed transaction. The default value for Enlist is true. If Enlist is not specified in the connection string, the connection is automatically enlisted in a distributed transaction if one is detected when the connection is opened.



来源:https://stackoverflow.com/questions/35716193/what-is-enlist-false-means-in-connection-string-for-sql-server

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!