我有两个应用程序对同一个SQL Server表执行某些操作。一个应用程序使用C#SqlBulkCopy
将大约20万条记录导入SQL Server表,另一个应用程序查询来自同一SQL Server表的数据。
我发现此消息 - 请检查屏幕截图。该表有一亿行。我该如何解决?
答案 0 :(得分:1)
如果任何事务正在修改表并影响超过5000行,则SQL Server将升级从行级锁定到独占表锁的锁定。< / p>
因此,如果您的应用程序#1在表中批量加载200'000行,那么该表将在加载过程中被独占锁定。
因此,在加载过程完成之前,您的应用程序#2或任何其他客户端将无法查询该表。
这是SQL Server的正常,记录,预期的行为。
要么确保在工作时间内一次批量加载数据少于5000行,要么在下班后进行批量加载,此时没有人受到独占表锁的负面影响。