いいえ、そうではありません。
標準的な方法は try/catch
を使用することです SqlException
を処理します 番号 1205
(デッドロックの犠牲者)、クエリを再試行してください:
try { // do stuff... } catch (SqlException sqlEx) { switch (sqlEx.Number) { case -2: // Client Timeout case 701: // Out of Memory case 1204: // Lock Issue case 1205: // >>> Deadlock Victim // handle deadlock break; case 1222: // Lock Request Timeout case 2627: // Primary Key Violation case 8645: // Timeout waiting for memory resource case 8651: // Low memory condition ... } }
プレ>[注:簡潔にするために break ステートメントは追加されていません
注意 、多くのロックの問題は、適切なカバー インデックスを提供することで排除できます。