故事
我有一个使用快照隔离的 SPROC 通过 MERGE 执行多个插入。此 SPROC 以非常高的负载调用,并且通常是并行调用的,因此它偶尔会引发错误 3960,这表明快照由于更改冲突而回滚。由于高并发,这是意料之中的。
问题
我已经实现了一个“重试”队列来稍后再次执行这项工作,但是我很难重现错误以验证我的检查是否准确。
问题
如何重现快照失败(特别是 3960)以验证我的重试逻辑是否正常工作?
已经尝试过
- RAISEERROR 不起作用,因为它不允许我提出现有错误,只有用户定义的错误
- 我尝试重新插入相同的记录,但这不会引发相同的失败,因为它不是两个不同的事务“竞争”另一个