【问题标题】:BizTalk Wcf_Custom - SQL Deadlock IssueBizTalk Wcf_Custom - SQL 死锁问题
【发布时间】:2014-04-14 15:19:47
【问题描述】:

我有如下的 DB SP UPDATEClientID。以客户端 ID 作为参数。
我在一秒钟内从 WCF 自定义适配器调用 UPDATEClientID SP 50 次。然后我看到了 SQL 死锁问题。

在我的场景中,我必须在一秒钟内调用 UPDATEClientID SP 50 次。如何解决 SQL 死锁问题?

CREATE  PROCEDURE [dbo].[UPDATEClientID]
    @ClientID VARCHAR(50) = NULL

AS
BEGIN

    SET NOCOUNT ON;

    UPDATE  CleintDetails
    SET     STATUS = 'Y'
    WHERE   ClientID = @ClientID            

END

【问题讨论】:

  • ANSWER - 存储过程代码在 BizTalk 服务器默认事务级别可序列化下执行。将其更改为读取已提交。我们可以通过您的存储过程中的以下语句来设置事务级别。 SET TRANSACTION ISOLATION LEVEL READ COMMITTED

标签: biztalk biztalk-2010 biztalk-2009 biztalk2006r2 biztalk-orchestrations


【解决方案1】:

你真的必须在一秒钟内调用这个存储过程 50 次,还是你只是碰巧每秒调用 50 次?

一些选项:

  1. 在发送端口上设置有序传递。这将序列化请求。然而,它会慢几个数量级。
  2. 使用锁提示优化语句,例如 ROWLOCK。

【讨论】:

    【解决方案2】:

    存储过程代码在 BizTalk 服务器默认事务级别可序列化下执行。将其更改为已提交的读取。

    我们可以通过在您的存储过程中的以下语句来设置事务级别。

    SET TRANSACTION ISOLATION LEVEL READ COMMITTED

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-28
      • 2012-04-22
      • 1970-01-01
      相关资源
      最近更新 更多