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

ADO.NET कॉलिंग T-SQL संग्रहीत कार्यविधि एक SqlTimeoutException का कारण बनती है

एक बार जब मैंने यह निर्धारित कर लिया कि यह समस्या की जड़ में ADO.NET कनेक्शन है, तो यह सूत्र मुझे उत्तर तक ले गया।

मूल रूप से Sql सर्वर प्रबंधन स्टूडियो (SSMS) के माध्यम से कनेक्शन डिफ़ॉल्ट रूप से SET ARITHABORT ON होते हैं . ADO.NET कनेक्शन नहीं है।

ARITHABORT OFF सेट करना और SSMS के माध्यम से सीधे क्वेरी निष्पादित करने से मुझे वही धीमा प्रतिक्रिया समय मिलता है।

इस सेटिंग के साथ या इसके बिना चलते समय मुख्य अंतर यह है कि दो कॉलों के लिए एक अलग क्वेरी योजना बनाई जाती है। जब ARITHABORT OFF था , SSMS कमांड पूर्व-संकलित कैश्ड क्वेरी योजना का उपयोग करेगा जिसका उपयोग ADO.NET कनेक्शन कर रहा था, और इसलिए टाइमआउट।

डेटाबेस पर व्यवस्थापक के रूप में निम्न आदेशों को चलाकर ARITHABORT की परवाह किए बिना सभी क्वेरी अपेक्षित रूप से चलती हैं सेटिंग।

DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE

मैं केवल यह मान सकता हूं कि संकलित क्वेरी योजना भ्रष्ट, या अमान्य हो गई है।

मैं इसके साथ दूसरे धागे पर समाधान के रूप में जाऊंगा (मैंने उत्तर को वोट दिया है)

धन्यवाद।



  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. कौन सा तेज COALESCE या ISNULL है?

  3. SQL सर्वर sp_msforeachtable उपयोग केवल उन तालिकाओं का चयन करने के लिए जो कुछ शर्तों को पूरा करती हैं

  4. SQL में तारीखों की तुलना करने वाली क्वेरी

  5. एक एसक्यूएल पंक्ति हैश?