3

我正在用 c# 编写一个类库来执行生产数据库的归档功能(使用 SQLServer 2000)。在该函数中,我将多个表的记录从生产数据库移动到存档数据库,并在出现故障时使用 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 希望它也能帮助其他人。

4

0 回答 0