事务状态无效,操作无法执行。

3

我有一个TransactionScope()块。它总是卡在插入语句上。它在Activity Monitor中显示为阻塞任务,因此它会阻塞SQL服务器,在超时后,我会收到以下错误:

该操作对事务状态无效。

发生了什么问题?

const TransactionScopeOption opt = new TransactionScopeOption();
TimeSpan span = new TimeSpan(0, 0, 1, 30);

try
{
    using (TransactionScope scope01 = new TransactionScope(opt, span))
    {
        using (var sqlcon = new SqlConnection(sSqlCon))
        {
            //select,insert , update statements
        }
    }
}
catch (Exception ex)
{
}

你有完整的堆栈跟踪和内部异常吗? - ken2k
我只有一个内部异常。 - Bill Brown
2个回答

2
这句话可能意味着事务被中止了。您在事务括号内是否调用了“transaction complete”?
try
{
    using (TransactionScope scope01 = new TransactionScope(opt, span))
    {
        using (var sqlcon = new SqlConnection(sSqlCon))
        {
            //select,insert , update statements
        }

        scope01.Complete();
    }
}

如果没有调用Complete,它会自动回滚。

0
交易可能已超时。请检查默认超时时间的 maching.config 文件。
<configuration> 
  <system.transactions>
    <machinesettings maxtimeout="00:30:00" />
  </system.transactions>
</configuration> 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接