如何在更新多行时从 SQL 服务器数据库中检索现有数据?

How can I retrieve existing data from an SQL Server database while updating many rows?

我们有一个程序,每半小时解析一些文件,并在 MS SQL 服务器数据库中插入或更新数据。问题是程序似乎一次性提交了许多操作。在过去,这不是问题,但最近解析的文件大小显着增加,现在每隔半小时数据库就会停止响应 5 分钟左右,我们无法执行简单的 select 语句 while该程序完成提交它所做的任何更改。

我们无法更改程序,那么我如何才能让数据库在程序完成提交更改时检索旧行,而不是像当前那样只是超时?

您可以更改数据库的隔离级别以使用读取已提交的快照隔离。 https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/snapshot-isolation-in-sql-server

阅读本文以更好地理解将 RCSI 切换为开启的含义。它可能会导致性能下降,并可能给您带来不希望的结果,因此请测试!:https://www.brentozar.com/archive/2013/01/implementing-snapshot-or-read-committed-snapshot-isolation-in-sql-server-a-guide/