SQL Server 2008中的死锁

时间:2011-09-28 07:08:07

标签: sql sql-server-2008

我有两个存储过程,都将行插入到同一个表中。

一旦存储过程调用常规时间间隔,另一个存储过程调用用户事件。有时两个存储过程一起被调用,此时发生死锁。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

您可以将表锁定在两个sprocs的开头。这样就不会出现死锁,因为数据修改必须等到另一个sproc完成。请参阅以下命令:

select 1 from theTable with (tablock, holdlock) where 1=0;

还需要在交易中完成。交易完成后,该表格将可编辑。

答案 2 :(得分:0)

您也可以考虑检测条件并重试。让每个程序在短时间内退回