Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

गतिरोध के कारण SqlException को कैसे पकड़ें?

गतिरोध के लिए माइक्रोसॉफ़्ट 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 के भीतर डेडलॉक पुन:प्रयास तर्क को कार्यान्वित करने के तरीके के बारे में।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. संग्रहीत कार्यविधि द्वारा लौटाई गई पंक्तियों की संख्या की गणना करना

  2. क्या SQL सर्वर में कोई रैखिक रिग्रेशन फ़ंक्शन है?

  3. मैं SQL सर्वर 2008 एक्सप्रेस में उसी सर्वर पर SQL सर्वर डेटाबेस को कैसे क्लोन कर सकता हूं?

  4. लिंक:दिनांक द्वारा क्रमबद्ध करें जब इसे टेक्स्ट के रूप में संग्रहीत किया जाता है

  5. एलडीएफ फाइल के बिना एमडीएफ फाइल अटैच करना