4
我不確定的地方,我可以在我的存儲過程使用我在哪裏可以在我的存儲過程中設置DEADLOCK_PRIORITY?
SET DEADLOCK_PRIORITY...
命令。在我開始交易之前需要做些什麼?或者它可以在交易中的任何地方?
謝謝大家!
我不確定的地方,我可以在我的存儲過程使用我在哪裏可以在我的存儲過程中設置DEADLOCK_PRIORITY?
SET DEADLOCK_PRIORITY...
命令。在我開始交易之前需要做些什麼?或者它可以在交易中的任何地方?
謝謝大家!
我不確定我是否理解這個問題:您可以根據需要更改優先級。如果你不確定,那麼你可以把它放在程序的開始,除非這是一個很長的過程,並且只有一個特定的查詢很容易出現死鎖。
雖然如果可能的話,更好的解決方案可能是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