वहाँ के बीच कोई अंतर है SqlCommand.CommandTimeout
और SqlConnection.ConnectionTimeout
.NET में?
जवाबों:
हाँ। CommandTimeout
एक एकल आदेश को पूरा होने में कितना समय लग सकता है। ConnectionTimeout
शुरू होने के लिए सर्वर से कनेक्शन स्थापित करने में कितना समय लग सकता है।
उदाहरण के लिए, आप अपेक्षाकृत लंबे समय तक चलने वाले प्रश्नों का निष्पादन कर सकते हैं - उन्हें पूरा करने में 10 मिनट लगना पूरी तरह से ठीक है, लेकिन अगर इसे शुरू करने के लिए कनेक्शन बनाने में 10 मिनट लगते हैं, तो आपको पता चलेगा कि कुछ गलत था।
SqlCommand.CommandTimeout
= अपने SQL क्वेरी के लिए समय सीमा। मतलब, कितना समय एक (जैसे: SELECT
, UPDATE
) क्वेरी इसके निष्पादन के लिए ले जा सकते हैं। यदि यह अधिक SqlCommand.CommandTimeout
हो जाता है, तो यह निष्पादन को रोक देता है। एक कमांड टाइमआउट त्रुटि उत्पन्न होगी।
SqlConnection.ConnectionTimeout
= आपके कनेक्शन के लिए समय सीमा। मतलब, आपका कनेक्शन ऑब्जेक्ट कितना समय कनेक्ट करने का प्रयास कर सकता है। यदि यह निर्दिष्ट समय से अधिक है, तो यह कनेक्ट करना बंद कर देता है। एक कनेक्शन टाइमआउट त्रुटि उत्पन्न होगी।
ConnectionTimeout
निर्दिष्ट अवधि जब करने का प्रयास कर बाहर समय से पहले प्रतीक्षा करने के लिए खोलने के लिए एक SqlConnection
। यह प्रासंगिक हैConnection.Open()
कमांड के ।
जबकि
SqlCommand.CommandTimeout
एक SqlCommand की समयावधि समाप्त होने से पहले प्रतीक्षा करने की अवधि निर्दिष्ट की। ऐसा तब होता है जब कनेक्शन खोला ExecuteXXX
जाता है और कमांड ऑब्जेक्ट पर एक विधि को बुलाया जाता है।
अतिरिक्त जानकारी
डिफ़ॉल्ट मान CommandTimeout
30 सेकंड है। शून्य (0) कोई सीमा नहीं दर्शाता है। आप सेट कर सकते हैंCommandTimeout
केवल कोडिंग में मान ।
डिफ़ॉल्ट मान ConnectiontTimeout
15 सेकंड है। शून्य (0) की कोई सीमा नहीं है। शून्य से कम मूल्य (माइनस मान) मिलेगा ArgumentException
। आप ConnectionTimeout
कोडिंग और कॉन्फ़िगरेशन फ़ाइल दोनों में मान सेट कर सकते हैं ।
select @@LOCK_TIMEOUT //get the TIMEOUT,default is -1
set LOCK_TIMEOUT = 600//set TIMEOUT with ms
कमांड टाइमआउट के बारे में त्वरित ध्यान दें, क्योंकि यह कनेक्शन और कमांड ऑब्जेक्ट दोनों की एक संपत्ति है ...
किसी कनेक्शन ऑब्जेक्ट पर कमांडटाइमआउट सेटिंग का उसी कनेक्शन पर कमांड ऑब्जेक्ट पर कमांडटाइमआउट सेटिंग पर कोई प्रभाव नहीं पड़ता है; वह है, कमांड ऑब्जेक्ट की कमांड टाइमआउट प्रॉपर्टी कनेक्शन ऑब्जेक्ट के कमांडटाइमआउट वैल्यू को इनहेरिट नहीं करती है।
तो एक कनेक्शन ऑब्जेक्ट पर कमांडटाइमआउट सेटिंग केवल कनेक्शन ऑब्जेक्ट के तहत निष्पादित कमांड को प्रभावित करती है (कमांड ऑब्जेक्ट का उपयोग किए बिना)।
उदाहरण के लिए जब आप किसी Stored Proc से जुड़ रहे हैं और कमांड ऑब्जेक्ट में पैरामीटर जोड़ रहे हैं, और एक कनेक्शन ऑब्जेक्ट के कनेक्शन का उपयोग करके कमांड ऑब्जेक्ट को निष्पादित कर रहे हैं, तो आपको कमांड ऑब्जेक्ट पर CommandTimeout सेट करने की आवश्यकता होगी और कनेक्शन ऑब्जेक्ट पर ConnectionTimeout दोनों को ओवरराइड करने के लिए चूक। कनेक्शन ऑब्जेक्ट पर कमांडटाइमआउट सेट करना कमांड ऑब्जेक्ट कमांड के लिए डिफ़ॉल्ट टाइमआउट को ओवरराइड नहीं करेगा।
https://docs.microsoft.com/en-us/sql/ado/reference/ado-api/commandtimeout-property-ado?view=sql-server-ver15 https://docs.microsoft.com/en-us / एसक्यूएल / हलचल / संदर्भ / हलचल-api / connectiontimeout-संपत्ति-हलचल? = एसक्यूएल सर्वर-ver15 देखने