0

我们有一个 ASP.NET Web 应用程序,它向 Windows 服务发送请求以删除/更新多个表中的记录。Windows 服务在存储过程中执行此操作,并且该调用位于 ADO.NET TransactionScope 中。

如果涉及的记录数很多,则需要 20-30 秒,在此期间如果用户尝试访问涉及这些表的 ASP.NET Web 应用程序的其他部分(将在不同的连接中),他会收到超时错误(因为交易仍在进行中)

我可以更改选择查询以包含with(nolock)提示或包含SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 在选择存储过程中。但是,这意味着我需要更改目前不可行的所有选择存储过程。

另外,我不能使用SNAPSHOT事务隔离模型,因为我需要将数据库的隔离模型设置为SNAPSHOT此时不可能。

有什么选择吗?

4

1 回答 1

0

如果您不能将数据库更改为快照隔离,并且您不能触及所有的 SELECT 过程以允许脏读,您是否可以更改删除或更新数据的方式?你能改变你的存储过程来做小批量的删除和/或更新吗?

于 2012-07-02T04:33:32.813 回答