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

एडीओ के साथ सी # में कुशल एसक्यूएल सर्वर डेडलॉक हैंडलिंग कैसे प्राप्त करें?

सबसे पहले, मैं अपने SQL 2000 कोड की समीक्षा करूंगा और इस गतिरोध की तह तक पहुंचूंगा कि यह गतिरोध क्यों हो रहा है। इसे ठीक करना एक बड़ी समस्या को छुपा सकता है (उदाहरण के लिए अनुपलब्ध अनुक्रमणिका या खराब क्वेरी)।

दूसरा, मैं डेडलॉकिंग स्टेटमेंट की पुष्टि करने के लिए अपने आर्किटेक्चर की समीक्षा करूंगा कि वास्तव में इसे अक्सर कॉल करने की आवश्यकता होती है (क्या select count(*) from bob एक सेकंड में 100 बार कॉल करना होगा?)

हालाँकि, यदि आपको वास्तव में कुछ गतिरोध समर्थन की आवश्यकता है और आपके SQL या आर्किटेक्चर में कोई त्रुटि नहीं है, तो निम्न पंक्तियों के साथ कुछ करने का प्रयास करें। (नोट:मुझे इस तकनीक का उपयोग प्रति सेकंड हजारों प्रश्नों का समर्थन करने वाले सिस्टम के लिए करना पड़ा है और शायद ही कभी गतिरोध मारा जाएगा)

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;
  }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL संग्रहीत कार्यविधि में गतिशील SQL परिणाम अस्थायी तालिका में होता है

  2. प्रत्येक संकलन के बाद पहली बार लोड करने के लिए इकाई ढांचा बहुत धीमा

  3. एक स्ट्रिंग से केवल संख्याएँ प्राप्त करने की क्वेरी

  4. SQL सर्वर सिस्टम डेटाबेस - मूल अवधारणाएँ

  5. SQL सर्वर डेटाबेस (T-SQL) को पुनर्स्थापित करें