TransactionScope给出错误分布式事务已完成。在新事务或NULL事务中登记此会话

时间:2012-07-18 07:36:58

标签: c# transactionscope

我在c#中编写一个类库来执行生产数据库的存档功能(使用SQLServer 2000)。在函数中,我将记录从生产数据库移动到多个表的Archive数据库,并使用transactionScope在事件失败时回滚更改。

由于大数据正从生产数据库移动到存档数据库,因此至少需要1/2小时。如果我删除transactionScope,一切正常,但使用transactionScope,我会在9-10分钟后得到以下错误。

分布式事务已完成。在新事务或NULL事务中登记此会话。

下面是伪代码

using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(2, 0, 0)))
{
    Open connection
    Check data present in production DB

Insert into Archivedb.dbo.table1(field1,field2,field3....) Select * from Proddb.dbo.table1 where date between date1 and date2
Insert into Archivedb.dbo.table2(field1,field2,field3....) Select * from Proddb.dbo.table2 where date between date1 and date2
Insert into Archivedb.dbo.table3(field1,field2,field3....) Select * from Proddb.dbo.table3 where date between date1 and date2
Insert into Archivedb.dbo.table4(field1,field2,field3....) Select * from Proddb.dbo.table4 where date between date1 and date2
}

我需要在某处设置超时吗?

修改

在打破我的头很长时间后,在下面的链接中找到了解决方案 http://blogs.msdn.com/b/dotnetinterop/archive/2005/12/16/504604.aspx 希望它也能帮助别人。

0 个答案:

没有答案