繁体   English   中英

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

[英]In C#,using select SCOPE_IDENTITY() causes deadlock?

通过将@@identity替换为SCOPE_IDENTITY()我遇到了死锁,尽管Microsoft建议使用scope_identity()

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM