गतिरोध के लिए माइक्रोसॉफ़्ट SQL सर्वर-विशिष्ट त्रुटि कोड 1205 है, इसलिए आपको SqlException को संभालना होगा और उसके लिए जाँच करनी होगी। तो, उदा. यदि अन्य सभी प्रकार के SqlException के लिए आप बबल को अपवाद चाहते हैं:
catch (SqlException ex)
{
if (ex.Number == 1205)
{
// Deadlock
}
else
throw;
}
या, C# 6 में उपलब्ध अपवाद फ़िल्टरिंग का उपयोग करके
catch (SqlException ex) when (ex.Number == 1205)
{
// Deadlock
}
किसी दिए गए संदेश के लिए वास्तविक SQL त्रुटि कोड खोजने के लिए एक आसान काम, SQL सर्वर में sys.messages में देखना है।
उदा.
SELECT * FROM sys.messages WHERE text LIKE '%deadlock%' AND language_id=1033
गतिरोध को संभालने का एक वैकल्पिक तरीका (SQL सर्वर 2005 और इसके बाद के संस्करण से), इसे 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
एक पूरा उदाहरण है यहां MSDN में पूरी तरह से SQL के भीतर डेडलॉक पुन:प्रयास तर्क को कार्यान्वित करने के तरीके के बारे में।