我是.net的初学者。我遇到了以下错误的问题
“无法执行事务操作,因为有待处理的请求处理此事务。”
我在博客中的某处读到.i将我的连接字符串添加到enlist=true
,问题已解决。
注意:我正在将我的数据库从sql server 2005升级到sql server 2008R2。
请帮助理解使用登记的重要性。
答案 0 :(得分:8)
Enlisting是Distributed Transaction
的用户Connection对象将自动登记在现有对象中 如果确定事务处于活动状态,则为分布式事务。 打开连接时会发生自动事务登记 或从连接池中检索。您可以禁用自动登记 在现有事务中,通过将
Enlist=false
指定为连接 SqlConnection的字符串参数,或OLE DB服务= -7作为 OleDbConnection的连接字符串参数。
注意在致电open
之前,联系必须为EnlistDistributedTransaction
。
答案 1 :(得分:3)
https://laravel.com/docs/master/scheduling说:
ConnectionString属性支持关键字Enlist 指示System.Data.SqlClient是否将检测事务 上下文并自动在分布式中登记连接 交易。 如果Enlist = true ,则会自动登记该连接 在开始线程的当前事务上下文中。 如果Enlist = false , SqlClient连接不与分布式交互 交易。 Enlist的默认值为true。如果不是Enlist 在连接字符串中指定,连接是自动的 如果检测到一个,则在分布式事务中登记 连接已打开。