【发布时间】:2016-04-11 21:46:21
【问题描述】:
两个 SP 一个接一个地被执行,第二个被第一个阻塞。他们都试图更新同一张表。两个SP如下
创建过程 [dbo].[SP1]
开始设置事务隔离级别快照;
开始交易 ImpSchd更新表 t1 .........................................................//更新 一组 [n1,n2....n100] 条记录
提交交易 ImpSchd
设置事务隔离级别 已提交阅读;结束
2.
创建过程 [dbo].[SP2]
开始
更新表 t1 .........................................................//更新 一组 [n101,n102.....n200] 条记录
结束
我的问题是当 sp1 运行时是快照级别的隔离,为什么它会阻塞 sp2(n 两者都在更新不同的记录集)?
如果我同时为两组不同的记录运行第一个 sp 完美运行。
我该如何克服这种情况?
如果使用快照级别的隔离是为每个更新同一个表的sp设置,那么这将是一个更大的变化。
如果两个 sp 必须更新表中的相同记录,我应该如何处理(两个 sp 将更新不同的列)?
【问题讨论】:
标签: sql-server locking