偶然にも、MS SQL Server 2008 R2 で同じストアド プロシージャが同時に 2 回実行されました。それらは同じ SQL Server Management Studio クライアントから実行されたもので、両方をキャンセルしようとしました。45 分経過しても、どちらのプロセスもキャンセルされていません。SSMSでクエリウィンドウを閉じると役立つとどこかで読んだので、そうしました。ただし、ストアド プロシージャが書き込むテーブルは、20 時間近く経過してもロックされたままです。デッドロックがあると思います。ストアド プロシージャが開始されてから数秒後にキャンセルを押しました。
ストアド プロシージャが読み取っているテーブルはロックされていません。ストアド プロシージャは CLR です。テーブルから読み取り、データを操作し、SqlBulkCopy を使用して他の 3 つのテーブルに挿入します。
SP が書き込むテーブルのデータは、非常に簡単に再作成できます。ただし、ロックのためにそれらを削除したり切り捨てたりすることはできません。KILL SPID も試してみましたが、結果はありませんでした。
サーバーを再起動することを考えていましたが、SQL Server のデータの整合性のために役に立たないでしょう。
ロックを解除する方法についてご意見をいただければ幸いです。多くのユーザーがいるいくつかの Web サイトはデータベース サーバーに依存しているため、再起動を必要としないソリューションは非常に高く評価されます。