将请求排队到sql server存储过程

时间:2011-11-23 14:27:58

标签: sql-server sql-server-2008 locking deadlock isolation-level

我正在使用以下存储过程:

  1. 确定表中selectedBy列为空的行数

  2. 随机选择其中一行

  3. 更新此行的selectedBy列

  4. 将行返回到客户端

  5. 如何防止客户在完全同时选择的情况下选择同一行?

    我尝试了各种表提示和隔离级别,但只是在客户端获得死锁异常。我只是希望第二次调用等待一秒钟,直到第一次调用完成。

1 个答案:

答案 0 :(得分:2)

避免死锁的一种方法(如问题标题所示)将序列化对该过程的访问。

您可以使用sp_getapplocksp_releaseapplock

执行此操作

有关示例代码,请参阅Application Locks (or Mutexes) in SQL Server 2005