故事
我有一个使用快照隔离的 SPROC 通过 MERGE 执行多个插入。此 SPROC 以非常高的负载调用并且通常是并行调用的,因此它偶尔会抛出错误 3960 - 这表明快照因更改冲突而回滚。由于高并发性,这是意料之中的。
问题
我已经实现了一个“重试”队列,以便稍后再次执行这项工作,但我很难重现错误以验证我的检查是否准确。
问题
如何重现快照故障(特别是 3960)以验证我的重试逻辑是否正常工作?
已经尝试过
最佳答案
打开两个连接,在两个连接上启动快照事务,在连接 1 上更新一条记录,在连接 2 上更新同一条记录(在后台,因为它会阻塞),然后在连接 1 上提交
或者将用户错误视为 3960 ...
关于sql - 如何强制快照隔离失败 3960,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10018210/