टी एल; डॉ; आपका SQL सर्वर आवृत्ति डायनेमिक पोर्ट का उपयोग कर रहा है जो काम नहीं कर रहा है। SQL सर्वर को स्थिर पोर्ट # 1433 का उपयोग करने के लिए बाध्य करें।
पूर्ण विवरण : यदि आप डिफ़ॉल्ट और नामित उदाहरण या केवल उदाहरणों (जो मेरा मामला था) का मिश्रण है, तो सबसे पहले इस समस्या की अधिक संभावना है।
मुख्य सिद्धान्त : कंप्यूटर पर स्थापित Microsoft SQL सर्वर का प्रत्येक उदाहरण आने वाले कनेक्शन अनुरोधों को सुनने के लिए एक अलग पोर्ट का उपयोग करता है। एसक्यूएल सर्वर का डिफ़ॉल्ट उदाहरण पोर्ट # 1433 का उपयोग करता है। जैसा कि आप नामित उदाहरणों को स्थापित करते हैं, तब वे डायनेमिक पोर्ट का उपयोग करना शुरू कर देंगे, जो कि विंडोज सर्वर के स्टार्ट-अप के समय तय किया गया है जिसका नाम एसक्यूएल सर्वर उदाहरण है।
मेरा कोड विफल हो रहा था (त्रुटि कोड 40 के साथ) केवल उस SQL सर्वर आवृत्ति से कनेक्ट करने के लिए जिसे मैंने अपने वीएम पर रखा था। आप संभव समाधान नीचे आज़मा सकते हैं:
समाधान # 1 : SQL सर्वर आवृत्ति से कनेक्ट करने का प्रयास करने वाला क्लाइंट कोड पोर्ट नंबर का पता लगाने के लिए SQL सर्वर ब्राउज़र सेवा से मदद लेता है जिस पर आपका नाम उदाहरण आने वाले कनेक्शन के लिए सुन रहा है। सुनिश्चित करें कि SQL ब्राउज़र सेवा आपके कंप्यूटर पर चल रही है।
समाधान # 2 : पोर्ट की जाँच करें # (पीले रंग में) आपके नामित SQL सर्वर उदाहरण SQL सर्वर कॉन्फ़िगरेशन प्रबंधक से स्नैपशॉट में दिखाए अनुसार उपयोग कर रहा है:
उस पोर्ट नंबर का उपयोग स्पष्ट रूप से अपने कनेक्शन स्ट्रिंग में या sqlcmd
नीचे दिखाए गए के साथ करें:
sqlcmd -s mymachinename,11380 -i deleteDB.sql -o SQLDelete.txt
समाधान # 3 : पोर्ट # 1433 का उपयोग करने के लिए अपने नामित उदाहरण को बाध्य करें जो डिफ़ॉल्ट उदाहरण द्वारा उपयोग किया जाता है। याद रखें यह तभी काम करेगा जब आपके कंप्यूटर पर कोई डिफ़ॉल्ट SQL सर्वर इंस्टेंस नहीं होगा क्योंकि डिफ़ॉल्ट SQL सर्वर इंस्टेंस पोर्ट # 1433 का उपयोग पहले से ही कर रहा होगा। समान पोर्ट नंबर का उपयोग दो अलग-अलग विंडोज सेवाओं द्वारा नहीं किया जा सकता है।
निशान TCP Dynamic ports
फ़ील्ड को रिक्त और TCP Port
फ़ील्ड को 1433 पर ।
नीचे दिखाए गए अनुसार अपने कनेक्शन स्ट्रिंग में पोर्ट नंबर बदलें:
sqlcmd -s mymachinename\instanceName -i deleteDB.sql -o SQLDelete.txt
या
sqlcmd -s mymachinename,1433 -i deleteDB.sql -o SQLDelete.txt
ध्यान दें : टीसीपी / आईपी सेटिंग्स में हर बदलाव के लिए विंडोज सर्विस रिस्टार्ट की आवश्यकता होती है।
दिलचस्प रूप से त्रुटि को हल करने के बाद पर्याप्त है जब मैं उसी त्रुटि को पुन: उत्पन्न करने के लिए डायनेमिक पोर्ट सेटिंग पर वापस गया, तो ऐसा नहीं हुआ। यकीन नहीं है कि क्यों।
SQL सर्वर के डायनेमिक पोर्ट के बारे में अधिक जानने के लिए कृपया नीचे दिए गए दिलचस्प सूत्र पढ़ें:
कई उदाहरणों पर SQL सर्वर पोर्ट को कॉन्फ़िगर कैसे करें?
डायनामिक पोर्ट "डायनामिक" कब होता है?
टीसीपी डायनेमिक पोर्ट का उपयोग कब करें और टीसीपी पोर्ट कब करें?
मुझे अपनी समस्या का समाधान इस ब्लॉग से मिला।