2013-05-16 29 views

回答

7

我不確定我是否理解這個問題:您可以根據需要更改優先級。如果你不確定,那麼你可以把它放在程序的開始,除非這是一個很長的過程,並且只有一個特定的查詢很容易出現死鎖。

雖然如果可能的話,更好的解決方案可能是avoid the deadlock

您可能還需要注意的是在存儲過程中的任何改變的優先級被重置爲呼叫會話的優先級,當程序退出:

set deadlock_priority high 
go 
select deadlock_priority from sys.dm_exec_sessions where session_id = @@spid 
go 

create proc dbo.p 
as 
begin 
select deadlock_priority as 'PriorityBefore' from sys.dm_exec_sessions where session_id = @@spid 
set deadlock_priority low 
select deadlock_priority as 'PriorityAfter' from sys.dm_exec_sessions where session_id = @@spid 
end 
go 

exec dbo.p 

select deadlock_priority from sys.dm_exec_sessions where session_id = @@spid 

drop proc dbo.p 
go 

set deadlock_priority normal 
go 
相關問題