Sql Server 2012上的队列竞争条件

时间:2017-07-31 14:02:03

标签: sql-server race-condition

我有一个进程(tableProcess)UI,当时有多人会分析。

用户工作流程:

1 - 用户访问执行SP的流程UI以返回可用的流程数量并打开更新的流程 我正在使用

FROM tableProcess AS process WITH (UPDLOCK, READPAST)

在同一个SP中,我使用当前日期更新所选行。

2 - 用户确认验证/使流程无效的操作。 使用SP选择和更新流程

问题我有时会锁定整个tableProcess。对此有何解决方法?

sp片段

SELECT TOP (1) @Column1,@Column2,@Column3

FROM tableProcess AS process WITH (UPDLOCK, READPAST)   
WHERE (process.Date IS NULL)
ORDER BY process.AnalyseDate 

BEGIN TRAN
    UPDATE process
        SET process.Date = GETDATE()
            FROM tblProcess AS process 
            WHERE process.Column2 = @Column2;
COMMIT TRAN;

我在该表上有两个索引:

-Colunm1(pk)(Unique,Clustered)

-Column2(非唯一,非群集)

0 个答案:

没有答案