我在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 希望它也能帮助别人。