什么是Enlist = false意味着在sql server的连接字符串中?

时间:2016-03-01 06:34:34

标签: c# sql-server-2005 sql-server-2008-r2 ado.net

我是.net的初学者。我遇到了以下错误的问题

  

“无法执行事务操作,因为有待处理的请求处理此事务。”

我在博客中的某处读到.i将我的连接字符串添加到enlist=true,问题已解决。

注意:我正在将我的数据库从sql server 2005升级到sql server 2008R2。

请帮助理解使用登记的重要性。

2 个答案:

答案 0 :(得分:8)

Enlisting是Distributed Transaction

的用户
  

Connection对象将自动登记在现有对象中   如果确定事务处于活动状态,则为分布式事务。   打开连接时会发生自动事务登记   或从连接池中检索。您可以禁用自动登记   在现有事务中,通过将Enlist=false指定为连接   SqlConnection的字符串参数,或OLE DB服务= -7作为   OleDbConnection的连接字符串参数。

注意在致电open之前,联系必须为EnlistDistributedTransaction

以下是Enlist=False;

的示例

答案 1 :(得分:3)

https://laravel.com/docs/master/scheduling说:

  

ConnectionString属性支持关键字Enlist   指示System.Data.SqlClient是否将检测事务   上下文并自动在分布式中登记连接   交易。 如果Enlist = true ,则会自动登记该连接   在开始线程的当前事务上下文中。 如果Enlist = false ,   SqlClient连接不与分布式交互   交易。 Enlist的默认值为true。如果不是Enlist   在连接字符串中指定,连接是自动的   如果检测到一个,则在分布式事务中登记   连接已打开。