在C#中,使用select SCOPE_IDENTITY()导致死锁?

时间:2016-12-29 09:49:58

标签: c# sql sql-server

@@identity替换为SCOPE_IDENTITY()我遇到了死锁,但Microsoft建议使用scope_identity()

在我的C#方法中,我有很多关于master的插入查询及其详细信息。有谁知道为什么调用scope_identity()会导致超时或死锁问题?

2 个答案:

答案 0 :(得分:1)

我认为这种情况可能与您执行并行插入表的代码有关。 Pinal Dave有一篇关于SCOPE_IDENTITY关于并行插入的错误的文章 你应该在这里阅读; http://blog.sqlauthority.com/2009/03/24/sql-server-2008-scope_identity-bug-with-multi-processor-parallel-plan-and-solution/

答案 1 :(得分:0)

以下是我在我的场景中申请死锁的解决方案:

  1. 死锁是通过在插入和更新查询上设置行锁来解决的。
  2. 我也在代码中发现了一些未提交的事务 另一个造成死锁的因素。
  3. 设置sp_configure'max degree of parallelism',1 用@@ identity替换scope_identity。