我正在用 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 希望它也能帮助其他人。