事务锁定Insert语句

时间:2011-07-07 05:34:03

标签: .net sql tsql sql-server-2008 transactions

我有一个外部分布式事务,它将一个insert语句锁定(挂起)到表中。 我无法控制外部交易。如何在非常精细的级别上避免这种阻塞。我试图在.net级别的那个插入周围放置Transaction Suppress。它没用。

请查看图片以获取详细信息。

此类问题的任何解决方案都非常有用enter image description here。我感谢您的支持。

1 个答案:

答案 0 :(得分:1)

如果两个操作之间存在强烈的交叉,并且不在同一个事务中,那么这是预期的。外部事务可能采用了引起阻塞的键范围锁(假设外部事务是“可序列化”的隔离级别)。除了:

之外,你真的没有什么可以做的
  • 在同一交易中登记/操作,而不是在其外操作
  • 降低外部操作的隔离级别,因此不会生成键范围锁定
  • 如果外部操作是查询(选择,而不是插入/更新/删除),则使用NOLOCK或类似方法以避免锁定它。)

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