【问题标题】:TransactionScope random error in debug mode调试模式下的 TransactionScope 随机错误
【发布时间】:2010-12-06 00:18:39
【问题描述】:

从调试模式执行代码时随机出现以下错误。

Cannot access a disposed object.
Object name: 'SqlDelegatedTransaction'.
  • 立即执行几个命令后抛出错误,而不是超时问题
  • 我只有一笔交易,以

    使用(var scope = new TransactionScope(TransactionOption.Required))

  • 在嵌套代码中使用上述相同语句打开多个连接。

  • 我使用的是 sqlserver 2008

可能出了什么问题?

【问题讨论】:

  • 您需要添加更多细节:显示更多代码,在您的代码中的哪一行出现此错误?您在做什么/调试(可能将“要执行的行”更改为该 using 块内的内容?)。
  • 您在退出 using 块后是否尝试调用任何内容?在 using 块之后,对象被放置。我建议您仔细检查您的代码并确认您没有意外退出 using 块并使用错位的“}”。

标签: c# .net transactions


【解决方案1】:

当您使用 TransactionOption.Required 时,事务会加入环境事务。

一种可能的理论是:

  • 如果你通过事务作用域并且不调用scope.Complete(),它将处理掉外部事务。尝试针对数据库运行的下一个代码将失败。

另一个是关于活动结果集的问题:

  • 您使用的是不支持多活动结果集 (MARS) 的 SQL Server 2000
  • 您的连接字符串是否指定 MultipleActiveResultSets=true

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-03
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-16
    相关资源
    最近更新 更多