我在线程中使用 TransactionScope 来转储我的SQL Server数据库中的数据。
using (TransactionScope scope = new TransactionScope())
{
// Dump data in database
scope.Complete();
}
该事务是一个长事务(~40秒),因为数据量很大。这很正常。
当我在此事务中执行Abort()
停止线程时,SQL Server似乎被锁定了几分钟。
发生了什么,我该如何避免这种情况?
答案 0 :(得分:2)
简单地说:你做不到。
服务器似乎在几个期间被锁定 分钟。
没有。 SQL Server正忙于撤消您的事务。它完全针对COMMIT事务进行了优化,而不是撤消它们。撤消LARGE更新是SLOW操作。根据您的服务器布局和数据量,它可能需要几分钟甚至几小时。
你所能做的就是......不回滚/中止。或者等一下。