【发布时间】:2013-08-22 21:23:22
【问题描述】:
我正在尝试解决有关 SQL 事务(在通过 LINQ-to-SQL 调用的存储过程中)的死锁问题。我使用 SQL Server Profiler 发现 SP 自身陷入死锁。
我的客户正在快速连续调用 WCF 方法,该方法又调用了导致死锁的 SP。
我已尝试设置所有各种 SQL Server 隔离级别,并尝试设置 WCF ConcurrencyMode = Single。
我仍然有许多死锁“受害者”,因此我丢失了插入数据。
有人解决过这种问题吗?
亲切的问候, 尼克V
【问题讨论】:
-
解决方案将在您的存储过程的设计中。可以发一下代码吗?
-
当您遇到死锁异常时,您应该在异常处理程序中重试事务。虽然我同意 Paul Keister 的观点,但问题可能出在存储过程中,您需要在代码中优雅地处理死锁。以 500 毫秒的延迟重试事务将比丢失数据更优雅一些。
标签: sql-server wcf deadlock