2011-07-07 108 views
1

我有一个外部的分布式事务被锁定(挂)INSERT语句表。 我无法控制外部交易。如何在非常精细的级别避免这种阻塞。我尝试在.net级别将该事务禁止放在该插入处。它没有工作。交易锁定的Insert语句

请看详细信息的图像。

任何解决这种问题可能是非常有帮助的enter image description here。我感谢您的支持。

回答

1

,如果有什么之间的两个操作正在寻找一个强大的交叉的预期,而不是在同一个事务。外部事务大概采取了导致该块的键范围锁定(猜测外部事务是“可序列化的”隔离级别)。还有什么是你真正能做到的,除了:

  • 争取/运行在相同的事务,而不是运营外面
  • 较低外操作的隔离级别,所以不会产生键范围锁
  • 如果外部操作是查询(一个选择,而不是插入/更新/删除),然后使用NOLOCK或类似避免锁定它)

,如果你不能做任何的那些事情,那么你不能插入不破坏完整性 - 所以它不会让你。您可能需要考虑推迟插入操作,直到外部操作完成为止。

+0

在我的代码,我没有看到任何内部交易,但是从图像确实认为是没有被阻止任何INSERT语句,周围有交易?我觉得这是之前 – Praneeth

+1

insert语句@Praneeth如果INSERT操作是在交易与否并不重要;重点是:**外**事务有一个你与之冲突的锁。您需要*在该交易内*,或者您需要等到该交易完成。 –