Pertama, saya akan meninjau kode SQL 2000 saya dan memahami mengapa kebuntuan ini terjadi. Memperbaiki ini mungkin menyembunyikan masalah yang lebih besar (Misalnya indeks tidak ada atau kueri buruk).
Kedua, saya akan meninjau arsitektur saya untuk mengonfirmasi bahwa pernyataan kebuntuan benar-benar perlu sering dipanggil (Apakah select count(*) from bob
harus dipanggil 100 kali per detik?).
Namun, jika Anda benar-benar membutuhkan dukungan kebuntuan dan tidak memiliki kesalahan dalam SQL atau arsitektur Anda, cobalah sesuatu di sepanjang baris berikut. (Catatan:Saya harus menggunakan teknik ini untuk sistem yang mendukung ribuan kueri per detik dan jarang menemui jalan buntu)
int retryCount = 3;
bool success = false;
while (retryCount > 0 && !success)
{
try
{
// your sql here
success = true;
}
catch (SqlException exception)
{
if (exception.Number != 1205)
{
// a sql exception that is not a deadlock
throw;
}
// Add delay here if you wish.
retryCount--;
if (retryCount == 0) throw;
}
}