SQL Server 2008 R2 でデッドロックの問題が発生しています。SQL プロファイラーでデッドロック グラフを見ると、問題はクエリ通知に起因するようです。
<resource-list>
<keylock hobtid="72057654759522304" dbid="6" objectname="MyDB.sys.query_notification_814081939" indexname="cidx" id="lock15ab2aa80" mode="RangeX-X" associatedObjectId="72057654759522304">
<owner-list>
<owner id="process5c5708" mode="RangeX-X"/>
</owner-list>
<waiter-list>
<waiter id="process4e9ae08" mode="RangeS-U" requestType="wait"/>
</waiter-list>
</keylock>
<keylock hobtid="72057654759522304" dbid="6" objectname="MyDB.sys.query_notification_814081939" indexname="cidx" id="lock15e56a300" mode="RangeS-U" associatedObjectId="72057654759522304">
<owner-list>
<owner id="process4e9ae08" mode="RangeS-U"/>
</owner-list>
<waiter-list>
<waiter id="process5c5708" mode="RangeS-U" requestType="wait"/>
</waiter-list>
</keylock>
</resource-list>
これらのクエリ通知は、SQLDependency を使用して実装されます。SQLDependency によって監視されているテーブルを更新するときに、デッドロックが発生しているようです。
デッドロック グラフの構文がよくわかりません。KeyLock モードは、シリアライズ可能なトランザクション分離レベルを使用している場合のみ RangeS-U です。、 右 ?
この質問も読みました... READ_COMMITED_SNAPSHOT を有効にする必要がありますか?
どうも...