0

我有如下的 DB SP UPDATEClientID。以客户端 ID 作为参数。
UPDATEClientID在一秒钟内从 WCF 自定义适配器调用 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
4

2 回答 2

0

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

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

设置事务隔离级别读取已提交

于 2014-04-14T19:50:26.453 回答
0

您真的必须在一秒钟内调用此存储过程 50 次,还是您恰好每秒调用 50 次?

一些选项:

  1. 在发送端口上设置有序交付。这将序列化请求。然而,它会慢几个数量级。
  2. 使用锁提示优化语句,例如 ROWLOCK。
于 2014-04-14T15:48:56.803 回答