डेटाबेस बनाने के लिए मास्टर का उपयोग क्यों करें?


12

मेरे पास एक छोटा सवाल है, मैं use master;एक डेटाबेस बनाने के लिए क्यों उपयोग करता हूं ? यहाँ Microsoft प्रलेखन से उदाहरण है

USE master ;
GO
CREATE DATABASE Sales
ON
( NAME = Sales_dat,
    FILENAME = 'C:\Program Files\...\saledat.mdf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5 )
LOG ON
( NAME = Sales_log,  
    FILENAME = 'C:\Program Files\...\salelog.ldf',
    SIZE = 5MB,
    MAXSIZE = 25MB,
    FILEGROWTH = 5MB ) ;

जवाबों:


22

यह बिल्कुल विशिष्ट मामले में एक आवश्यकता नहीं है, लेकिन कई अन्य स्थितियों में यह एक आवश्यकता है। यदि आप नामक एक डेटाबेस बना रहे हैं Sales, और आपके पास एक डेटाबेस है जिसे कॉल किया जाता है Sales, तो आपको अपने डेटाबेस के संदर्भ को बदलने की आवश्यकता होगी:

  • प्रतिस्थापन के साथ पुनर्स्थापित करें; या,
  • वर्तमान डेटाबेस को छोड़ दें और फिर:
    • खरोंच से बनाएं; या,
    • संलग्न करने के लिए बनाएँ।

डेटाबेस निर्माण के बाहर बहुत सारे अन्य परिदृश्य भी हैं जिनकी आवश्यकता भी है (ए) वर्तमान डेटाबेस के संदर्भ में नहीं है, या (बी) masterविशेष रूप से (या कम से कम विशिष्ट डेटाबेस नहीं ) के संदर्भ में , और कई ये चीजें आप डेटाबेस बनाने के दौरान या आसपास कर सकते हैं:

  • एक अलग राज्य के लिए एक डेटाबेस सेट करना, जैसे single_user
  • जब किसी स्क्रिप्ट में USEकमांड होती है तो त्रुटियों को रोकना लेकिन उपयोगकर्ता डेटाबेस ऑफ़लाइन या अन्यथा दुर्गम हो सकता है
  • सर्वर-स्तरीय अनुमतियाँ देना जैसे CREATE DATABASE
  • सर्वर-स्तरीय भूमिका सदस्यता प्रदान करना
  • किसी मॉड्यूल को सिस्टम ऑब्जेक्ट ( sp_MS_marksystemobject) या स्टार्टअप प्रक्रिया के रूप में चिह्नित करना
  • कुछ प्रकार के प्रमाण पत्र, सर्वर ऑडिट और उपलब्धता समूह संचालन

शायद अन्य चीजों का एक धब्बा। USE master;हमेशा आवश्यक नहीं है, लेकिन कभी-कभी यह होता है, और यह उस डेटाबेस से हमेशा सर्वर-स्तरीय कमांड निष्पादित करने के लिए चोट नहीं पहुंचाता है।


17

मेरा मानना ​​है कि यह एक आवश्यकता नहीं है कि आपको masterडेटाबेस बनाने के लिए डेटाबेस का उपयोग करना चाहिए । चूंकि डेटाबेस बनाने के कमांड को डेटाबेस के संदर्भ में चलाया जाना चाहिए क्योंकि प्रलेखन हमेशा एक डिफ़ॉल्ट डेटाबेस का उपयोग करता है जो कि है masterऔर यह एक सिस्टम डेटाबेस है जो हमेशा रहेगा कोई फर्क नहीं पड़ता कि क्या स्क्रिप्ट विफल नहीं होती है!


4

मुझे विश्वास है कि हम, बहुत समय पहले, क्रिएट डटबेस कमांड को निष्पादित करते समय मास्टर में होना चाहिए था । मैं सत्यापित करने के लिए कुछ 20 साल पुराने संस्करण को आग लगाने के लिए बहुत आलसी हूं। तो शायद इसका एक संयोजन और यह कि यह "प्राकृतिक लगता है" मास्टर में होना चाहिए। जैसे यदि आप एक फ़ोल्डर बनाने के लिए हैं (कल्पना करें कि केवल एक स्तर के फ़ोल्डर्स हैं), तो आप शायद सीडी को पहले (मास्टर डेटाबेस के साथ यहां रूट की तुलना) कहने के लिए "बेहतर" महसूस करेंगे।

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