我是一个 .net 的初学者。我遇到了以下错误:
"由于有正在处理此事务的挂起请求,因此无法执行事务操作。"。
我在博客上看到过,将我的连接字符串附加上 enlist=true
后,问题得到了解决。
注意: 我正在将我的数据库从 SQL Server 2005 升级到 SQL Server 2008R2。
请帮助理解使用 enlist 的重要性。
我是一个 .net 的初学者。我遇到了以下错误:
"由于有正在处理此事务的挂起请求,因此无法执行事务操作。"。
我在博客上看到过,将我的连接字符串附加上 enlist=true
后,问题得到了解决。
注意: 我正在将我的数据库从 SQL Server 2005 升级到 SQL Server 2008R2。
请帮助理解使用 enlist 的重要性。
Enlisting是用于分布式事务的用户。
如果连接对象确定事务处于活动状态,则会自动在现有的分布式事务中注册。当连接被打开或从连接池中检索时,自动事务登记发生。您可以通过为SqlConnection指定
Enlist=false
作为连接字符串参数,或者为OleDbConnection指定Ole DB Services=-7作为连接字符串参数来禁用现有事务中的自动登记。
注意 在调用EnlistDistributedTransaction
之前,必须使连接处于open
状态。
以下是一个示例,其中Enlist=False;
:
ConnectionString属性支持一个关键字Enlist,它表示System.Data.SqlClient是否会检测事务上下文并自动将连接加入到分布式事务中。如果Enlist=true,则该连接会自动加入到打开线程的当前事务上下文中。如果Enlist=false,则SqlClient连接不会与分布式事务交互。Enlist的默认值为true。如果在连接字符串中未指定Enlist,则当连接打开时检测到分布式事务时,该连接会自动加入到分布式事务中。