8

どこで使えるか分からない

SET DEADLOCK_PRIORITY...

私のストアドプロシージャのコマンド。取引を開始する前に行う必要がありますか? それとも、トランザクションのどこかにある可能性がありますか?

皆さんありがとう!

4

1 に答える 1

12

質問を理解しているかどうかわかりません。必要な場所で優先度を変更できます。よくわからない場合は、おそらく非常に長い手順で、デッドロックを起こしやすい特定のクエリが 1 つしかない場合を除いて、手順の最初に置くことができます。

より良い解決策は、可能であればデッドロックを回避することでしょう。

また、ストアド プロシージャ内の優先度の変更は、プロシージャが終了するときに呼び出し元のセッションの優先度にリセットされることに注意してください。

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
于 2013-05-17T14:27:25.167 に答える