मेरे अनुभव में सामान्य कारण है कि एसएसएमएस में एक क्वेरी तेजी से चलती है लेकिन .NET से धीमी है कनेक्शन के SET
में अंतर के कारण है -टिंग्स। जब कोई कनेक्शन SSMS या SqlConnection
द्वारा खोला जाता है , SET
. का एक गुच्छा निष्पादन वातावरण स्थापित करने के लिए आदेश स्वचालित रूप से जारी किए जाते हैं। दुर्भाग्य से SSMS और SqlConnection
अलग SET
. है डिफ़ॉल्ट।
एक सामान्य अंतर है SET ARITHABORT
. SET ARITHABORT ON
जारी करने का प्रयास करें आपके .NET कोड से पहली कमांड के रूप में।
SQL Profiler का उपयोग मॉनिटर करने के लिए किया जा सकता है कि कौन सा SET
आदेश SSMS और .NET दोनों द्वारा जारी किए जाते हैं ताकि आप अन्य अंतर ढूंढ सकें।
निम्न कोड दर्शाता है कि कैसे एक SET
जारी किया जाए आदेश लेकिन ध्यान दें कि इस कोड का परीक्षण नहीं किया गया है।
using (SqlConnection conn = new SqlConnection("<CONNECTION_STRING>")) {
conn.Open();
using (SqlCommand comm = new SqlCommand("SET ARITHABORT ON", conn)) {
comm.ExecuteNonQuery();
}
// Do your own stuff here but you must use the same connection object
// The SET command applies to the connection. Any other connections will not
// be affected, nor will any new connections opened. If you want this applied
// to every connection, you must do it every time one is opened.
}