SQL सर्वर कनेक्शन स्ट्रिंग में "प्रारंभिक कैटलॉग" का क्या मतलब है?


91

हर SQL सर्वर कनेक्शन स्ट्रिंग जो मुझे कभी दिखती है वह कुछ इस तरह है:

Data Source=MyLocalSqlServerInstance;Initial Catalog=My Nifty Database;
    Integrated Security=SSPI;

क्या मुझे प्रारंभिक कैटलॉग सेटिंग की आवश्यकता है? (स्पष्ट रूप से नहीं, क्योंकि मैं जिस ऐप पर काम कर रहा हूं, वह इसके बिना काम करता है।)

खैर, फिर, इसके लिए क्या है?


31
हम्म, मैंने अभी-अभी पता लगाया है कि मेरे ऐप ने मेरी बनाई हुई सभी टेबल को मास्टर में डाल दिया। उफ़। हो सकता है कि मैंने अपने प्रश्न का उत्तर जान लिया हो।
रयान ल्यूडी

जवाबों:


53

यदि कनेक्शन स्ट्रिंग में मौजूद उपयोगकर्ता नाम में अधिक पहुंच है तो एक डेटाबेस आपको उस डेटाबेस को निर्दिष्ट करना होगा जिसे आप कनेक्ट करने के लिए कनेक्शन स्ट्रिंग चाहते हैं। यदि आपके उपयोगकर्ता के पास केवल एक डेटाबेस उपलब्ध है तो आप सही हैं कि इससे कोई फर्क नहीं पड़ता। लेकिन इसे अपने कनेक्शन स्ट्रिंग में रखना अच्छा अभ्यास है।


10
बिल्कुल सच नहीं है। डिफ़ॉल्ट डेटाबेस पर लॉगिन की अनुमति नहीं हो सकती है। तो, आपको कनेक्शन पर डेटाबेस संदर्भ को बदलने की आवश्यकता है
gbn

यदि आप -ConnectionStringName पैरामीटर का उपयोग करते हैं, तो निश्चित रूप से अच्छी प्रैक्टिस के लिए, लेकिन यह आवश्यक होने पर, एंटिटी फ्रेमवर्क के लिए आवश्यक है!
जेम्स जी

क्या आप कृपया इसका उत्तर दे सकते हैं? दो बार पढ़ने के बाद भी मुझे समझ नहीं आया।
किव्सग्युय

33

यह वह जगह है प्रारंभिक डेटाबेस डेटा स्रोत है जब आप कनेक्ट की।

स्पष्टता के लिए संपादित :

यदि आपके SQL सर्वर आवृत्ति में कई डेटाबेस हैं और आप डिफ़ॉल्ट डेटाबेस का उपयोग नहीं करना चाहते हैं, तो आपको यह निर्दिष्ट करने की आवश्यकता है कि आप किसका उपयोग करने जा रहे हैं।


1
पहला भाग सही है। दूसरा भाग सही नहीं है। जब आप खाता बनाते हैं तो उसे एक डिफ़ॉल्ट डेटाबेस सौंपा जाता है जिसका उपयोग तब किया जाएगा जब प्रारंभिक कैटलॉग निर्दिष्ट नहीं किया जाता है। यह आम तौर पर मास्टर के लिए चूक (किसी अज्ञात कारण के लिए) है।
ग्रेवॉरिक्सक्स

जब मैं "बाय डिफॉल्ट" कहता हूं तो मेरा सीधा सा मतलब है कि जब आप डेटाबेस को अपने ऑब्जेक्ट के नाम पर क्वालिफाई नहीं कर रहे हैं। किसी भी मामले में, मैंने अपना उत्तर स्पष्ट कर दिया है।
एंडी वेस्ट

मुझे एंडी का स्पष्टीकरण पसंद है, वास्तव में उनकी टिप्पणी सहायक है; इसका अर्थ यह है कि अगर मैं ऐसा नहीं करता करते मेरी वस्तु नामों में हर डेटाबेस चुने जाते हैं, तो प्रारंभिक सूची नहीं महत्वपूर्ण / अप्रासंगिक के रूप में है?
लाल मटर

12

एक प्रारंभिक कैटलॉग सेट करने से आप उस डेटाबेस को सेट कर सकते हैं जो उस कनेक्शन पर चलने वाले प्रश्नों को डिफ़ॉल्ट रूप से उपयोग करेगा। यदि आप इसे किसी ऐसे सर्वर से कनेक्शन के लिए सेट नहीं करते हैं जिसमें कई डेटाबेस मौजूद हैं, तो कई मामलों में आपको स्पष्ट रूप से घोषित करने के लिए प्रत्येक क्वेरी में USE स्टेटमेंट होना आवश्यक है कि आप किस डेटाबेस पर क्वेरी को चलाने का प्रयास कर रहे हैं। प्रारंभिक कैटलॉग सेटिंग डिफ़ॉल्ट डेटाबेस को स्पष्ट रूप से घोषित करने का एक अच्छा तरीका है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.