私は次の状況にあります:ストアドプロシージャは断続的に2つのテーブルを使用します。このspを同時に実行する必要があります(同時に50のように)。これにより、約33%のケースでデッドロックが発生します。問題は、ここでsp_getapplockを使用するのが適切かどうかです。私がするのは追加することだけです:
exec sp_getapplock @Resource = 'resource_name', @LockMode = 'exclusive',@LockTimeout = '60000', @DbPrincipal = 'dbo'
トランザクションの最初のコマンドとして、すべてが機能しているようです。並行性を除いて、それは大丈夫です。不安なのは、データベースが実際に行うべきことを実行しようとしていることです。おそらく、このアプローチにはより良い代替案や深刻な欠点がありますか?