異なるプロセスの同じ一時テーブルのロックからのデッドロック
私は不可能だと思った何かを示すように見えるデッドロックを発見しました。デッドロックには2つのプロセスが関係します。 1. process8cf948 SPID 63 一時テーブル#PB_Cost_Excp_Process_Invoices_WorkでALTER TABLEを実行します。 オブジェクトID 455743580でテーブル#PB_Cost_Excp_Process_Invoices_WorkのIXロックを所有 2. process4cb3708 SPID 72 一時テーブル#PB_Cost_Excp_Process_Invoices_WorkでUPDATEを実行します。これは、テーブルの独自のコピーであると想定されています。 同じオブジェクトID 455743580で#PB_Cost_Excp_Process_Invoices_WorkのSch-Mロックを所有しています! これは不可能だと思われます。何か不足していますか?#Temporaryテーブルは、これら2つのSPID間で本当に再利用されましたか? これは、累積的な更新1(バージョン10.50.4260)が適用されたSQL Server 2008 R2 Service Pack 2にあります。 変更されていない完全なデッドロックトレースは以下のとおりです。2つのプロセスが、同じテーブル名#PB_Cost_Excp_Process_Invoices_Work_SNIP_0000000D8519を使用して同じオブジェクトIDで動作していることに注意してください。 12/14/2012 13:46:03,spid23s,Unknown,waiter id=process8cf948 mode=X requestType=wait 12/14/2012 13:46:03,spid23s,Unknown,waiter-list 12/14/2012 13:46:03,spid23s,Unknown,owner id=process4cb3708 mode=Sch-M 12/14/2012 13:46:03,spid23s,Unknown,owner-list 12/14/2012 13:46:03,spid23s,Unknown,objectlock lockPartition=0 objid=455743580 subresource=FULL dbid=2 objectname=tempdb.dbo.#PB_Cost_Excp_Process_Invoices_Work_________________________________________________________________________________0000000D8519 id=lock371705d00 mode=Sch-M associatedObjectId=455743580 12/14/2012 13:46:03,spid23s,Unknown,waiter …