服务器:SQL Server 2008R2 客户端:Excel/ADO - 8 个客户端 服务器硬件:8 核/16GB 内存/操作系统:WinServer 2008SR2
插入/更新和合并/匹配存储过程都发生死锁。
我在这里阅读了很多关于插入/更新的内容,因此,我已将插入/更新更改为合并/匹配,但我仍然收到非常频繁的死锁错误(大约每 10 分钟一次)来自运行的 8 个客户端批处理模式要求以每分钟 2 次的速率进行更新。
相比之下,每个客户端每分钟向另一个表插入大约 20,000 个项目,完全没有问题。
我希望在解决这些死锁问题方面得到一些帮助,因为我认为这样一个微不足道的 8 个客户端(尤其是 Excel/ADO/VBA)应该能够对这个数据库施加压力!
另请注意,我不直接通过客户端发出任何 SQL 命令,所有 sql 命令都是通过存储过程调用的。
我现在的SP:
merge [dbo].[File_Level_Data] as TargetMerge
using(select @Name_of_File as name)as source
on (TargetMerge.Name_of_File = source.name)
when matched then
update
set
XXX1 = @XXX1,
ZZZ25 = @ZZZ25
when not matched then
insert
(XXX1,
ZZZ25
) values
(
@XXX1,
@ZZZ25
);