SQL Server - 死锁问题

时间:2016-09-01 16:22:19

标签: sql sql-server deadlock

我有2个以上的过程,每周3点通过SQL代理作业运行。所以这两个过程都会同时开始执行。

proc“dbo.Proc1”在几秒钟内失败:“事务(进程ID 46)在锁资源上与另一个进程陷入僵局,并被选为死锁牺牲品。重新运行该事务。” 但是proc“dbo.Proc2”成功运行。

任何人都可以帮我解决这个死锁问题吗?感谢。

ALTER PROCEDURE dbo.Proc1
AS
BEGIN
    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
    /* SELECT statements here that take ~20 minutes to return data */
    /* The base table here is dbo.Table1, which is a huge table */
END

ALTER PROCEDURE dbo.Proc2
AS
BEGIN
    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
    /* SELECT statements here that take ~20 minutes to return data */
    /* The base table here is dbo.Table1, which is a huge table */
END

我更喜欢这里的脏读,因为它是一种总结报告,不需要是最新的。当这些运行@ 3am时,没有其他事情发生 - 即没有人访问同一个数据库...这只是内部应用程序。

我很困惑,为什么它会导致死锁,即使它是脏读的!

0 个答案:

没有答案