Kode kesalahan khusus Microsft SQL Server untuk kebuntuan adalah 1205 jadi Anda harus menangani SqlException dan memeriksanya. Jadi, misalnya jika untuk semua jenis SqlException lainnya Anda ingin gelembung pengecualian naik:
catch (SqlException ex)
{
if (ex.Number == 1205)
{
// Deadlock
}
else
throw;
}
Atau, menggunakan pemfilteran pengecualian yang tersedia di C# 6
catch (SqlException ex) when (ex.Number == 1205)
{
// Deadlock
}
Hal yang berguna untuk dilakukan untuk menemukan kode kesalahan SQL yang sebenarnya untuk pesan yang diberikan, adalah dengan mencari di sys.messages di SQL Server.
misalnya
SELECT * FROM sys.messages WHERE text LIKE '%deadlock%' AND language_id=1033
Cara alternatif untuk menangani kebuntuan (dari SQL Server 2005 ke atas), adalah melakukannya dalam prosedur tersimpan menggunakan dukungan TRY...CATCH:
BEGIN TRY
-- some sql statements
END TRY
BEGIN CATCH
IF (ERROR_NUMBER() = 1205)
-- is a deadlock
ELSE
-- is not a deadlock
END CATCH
Ada contoh lengkap di sini di MSDN tentang cara menerapkan logika coba lagi kebuntuan murni dalam SQL.