我有一个WinForms项目,需要读取海量的xml文件(2GB+),并将数据存储在MSSQL数据库中。
10分钟后,我遇到了以下错误:
“当前连接关联的事务已完成但未被处理。在使用连接执行SQL语句之前必须处理该事务。”
我想这一定是超时问题,所以我进行了以下操作:
在我的代码中,我使用:
using (tran = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions()
{
IsolationLevel = System.Transactions.IsolationLevel.Serializable,
Timeout = TimeSpan.Zero //TimeSpan.FromHours(2)
}))
{
/*Here I read out xml, and use EF to write to DB*/
}
我在App.config中添加了以下内容:
<system.transactions>
<defaultSettings timeout="2:00:00"/>
</system.transactions>
我在我的machine.config文件中添加了以下内容:
<system.transactions>
<machineSettings maxTimeout="2:00:00"/>
</system.transactions>
在MSSQL中,我将远程查询超时设置为0。
尽管如此,仍然会出现超时。 我做错了什么?