2009-07-20 18 views
35

मैं यह पता लगाने की कोशिश कर रहा हूं कि क्यों SQL सर्वर db_owner स्कीमा और db_owner भूमिका है? यह बहुत भ्रमित है। मैं जवाब के लिए खोज कर दिया गया है और अब तक यह कैसे मेरी समझ जाता है:एसक्यूएल सर्वर भूमिकाएं, स्कीमा, उपयोगकर्ता

  1. सभी टेबल और (जैसे की कमी आदि) वस्तुओं एक स्कीमा के हैं। DBO डिफ़ॉल्ट स्कीमा होने के नाते।
  2. किसी उपयोगकर्ता को प्रत्येक ऑब्जेक्ट या स्कीमा को संपादित करने की अनुमति दी जा सकती है। स्कीमा पर एक अनुमति उस स्कीमा के भीतर सभी वस्तुओं को अनुमति प्रदान करती है। इसलिए आपको प्रत्येक व्यक्तिगत वस्तु पर अनुमति नहीं देनी है।
  3. सुविधा के लिए एक भूमिका समूह अनुमतियां।

यदि इनमें से कोई भी गलत है तो मुझे बताएं। लेकिन मुझे लगता है कि अब तक बहुत अच्छा है। अब मेरे प्रश्न हैं:

  1. एसक्यूएल सर्वर प्रबंधन स्टूडियो के "डेटाबेस उपयोगकर्ता" संवाद बॉक्स में देखा गया db_owner स्कीमा क्या है? और उसी संवाद पर, आप "डिफ़ॉल्ट स्कीमा" को dbo के रूप में परिभाषित करते हैं। दो समान क्यों नहीं हैं? यदि डिफ़ॉल्ट रूप से SQL सर्वर dbo का उपयोग सभी ऑब्जेक्ट्स बनाने के लिए करता है, तो db_owner का उपयोग क्या है?
  2. कोई उपयोगकर्ता स्कीमा क्यों लेना चाहता है? आप पहले से ही अनुमति/भूमिका नियुक्त कर रहे हैं। db_accessadmin के मालिक क्या हैं?
  3. क्या आप db_owner स्कीमा और db_accessadmin स्कीमा के तहत ऑब्जेक्ट्स बनाते समय एक उदाहरण दे सकते हैं? दूसरे शब्दों में क्या कोई वैध रूप से उन स्कीमा का उपयोग करता है?
+0

सहमत। यह उनके नाम से दो अलग-अलग प्रकार की वस्तुओं (एक स्कीमा और भूमिका) बनाने के लिए हास्यास्पद था। – LarryBud

उत्तर

23

एक एसक्यूएल सर्वर स्कीमा बस जैसे तालिकाओं, संग्रहित प्रक्रियाओं, के रूप में वस्तुओं के कंटेनर है आदि एक डाटाबेस भूमिका खिड़कियों लॉगिन, एसक्यूएल सर्वर उपयोगकर्ताओं, आदि

के रूप में प्रिंसिपलों, का एक समूह है विचार यह है कि आप "आईटी" कहने की भूमिका निभा सकते हैं, और सभी आईटी उपयोगकर्ता उस भूमिका के तहत हैं। फिर आपके पास "आईटी" नामक स्कीमा हो सकती है, और उसके अंतर्गत आईटी से संबंधित सभी टेबल हैं। बॉक्स के बाहर SQL सर्वर प्रत्येक डिफ़ॉल्ट उपयोगकर्ता और डेटाबेस में भूमिका के लिए मिलान स्कीमा बनाता है, लेकिन मुझे लगता है कि आप अपने संगठन की ज़रूरतों को पूरा करने के लिए इसे अनुकूलित करना चाहते हैं।

This article मालिकों और स्कीमा के बीच अंतरों पर अधिक जानकारी है। स्टैक ओवरफ़्लो पर This question भी उपयोगी हो सकता है।

+0

लेख बहुत उपयोगी है। तो आपके उत्तर से मैं इसे लेता हूं db_accessadmin स्कीमा बेकार है और db_accessadmin भूमिका का दुष्प्रभाव है। कोई भी db_accessadmin स्कीमा के अंतर्गत टेबल बनाता है, लेकिन इसके बजाय आप अपने डेटा के लिए अधिक स्कीमा का उपयोग करते हैं। क्या किसी ऑब्जेक्ट/स्कीमा के "स्वामित्व" की एक सूची आपको दी गई है? क्या यह उस ऑब्जेक्ट के लिए कल्पना करने योग्य सभी अधिकार है? या क्या आप कोई पढ़ा अधिकार वाले मालिक हो सकते हैं? अधिक जानकारी के लिए – Budric

+0

इस लेख को http://msdn.microsoft.com/en-us/library/ms189462.aspx देखें। विशेष रूप से, "स्कीमा के भीतर बनाए गए ऑब्जेक्ट्स स्कीमा के मालिक के स्वामित्व में हैं, और sys.objects में एक NULL प्रिंसिपल_आईड है। स्कीमा-निहित ऑब्जेक्ट्स की स्वामित्व किसी भी डेटाबेस-स्तरीय प्रिंसिपल में स्थानांतरित की जा सकती है, लेकिन स्कीमा स्वामी हमेशा नियंत्रण बनाए रखता है स्कीमा के भीतर वस्तुओं पर अनुमति। " तो ऐसा लगता है कि किसी मालिक के पास स्कीमा में वस्तुओं पर हमेशा पूर्ण नियंत्रण होता है। – tbreffni

0

मैं निम्नलिखित लिंक से नीचे उद्धृत कर रहा हूं। है के रूप में ही नाम दस पूर्व निर्धारित स्कीमा के साथ

https://msdn.microsoft.com/en-us/library/bb669061(v=vs.110).aspx

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

  • dbo
  • guest
  • sys
  • INFORMATION_SCHEMA
संबंधित मुद्दे