उपयोगकर्ता `dbo` और डेटाबेस के स्वामी के बीच sys.dat डेटाबेस में क्या अंतर है


11

हमने हाल ही में एक सवाल आया जहां उपयोगकर्ता था dboएक डेटाबेस में एक था sidकि मेल नहीं खाती owner_sidमें sys.databases। मैं समझता हूं कि डेटाबेस का मालिक भूमिका के सदस्यों से अलग कैसे है, db_ownerलेकिन मैंने हमेशा सोचा था कि उपयोगकर्ता dboडेटाबेस का वास्तविक मालिक था। क्या यह मामला नहीं है? और यदि ऐसा है तो क्या वास्तव में कोई अंतर है dboऔर क्या है sys.databases?

जवाबों:


8

मैंने हमेशा सोचा था कि उपयोगकर्ता dboडेटाबेस का वास्तविक मालिक था।

यह सही है (या कम से कम होना चाहिए)। उस उपयोगकर्ता का "dbo" नाम कभी नहीं बदलता है, फिर भी अंतर्निहित SID डेटाबेस बनाने वाले के आधार पर करता है, या जो इसे sp_changedbowner (हालांकि, और SQL सर्वर 2005 सहित) या ALTER AUTHIZISATION (SQL के साथ शुरू ) के माध्यम से सेट किया गया था सर्वर 2008)।

उन तीनों मामलों में, रिकॉर्ड sys.databasesभी बदल दिया जाता है ताकि उन्हें सिंक में रखा जाए। हालाँकि, डेटाबेस को पुनर्स्थापित करते समय, या तो किसी अन्य सिस्टम से या उसी इंस्टेंस से, लेकिन एक DB से जो कि 2 SQL कमांड से पहले एक बैकअप-अप / अलग किया गया था, मालिक को बदलने के लिए निष्पादित किया जा रहा है, फिर RESTORE या अटैचमेंट पर, वहाँ के बीच एक बेमेल होना owner_sidमें स्तंभ sys.databasesऔर "dbo" sidमें sys.database_principalsहै कि डीबी में।

जहां तक ​​मुझे जानकारी है, sys.database_principalsप्रत्येक DB में रिकॉर्ड असली मालिक है, और owner_sidस्तंभ sys.databasesरिकॉर्ड रखने / सुविधा (विकेंद्रीकरण के समान) का मामला है; sys.databasesसिस्टम के बिना सभी DB में अलग-अलग प्रश्न बनाने की आवश्यकता होगी। उस जानकारी को प्राप्त करें, हर बार अनुरोध!) और सुरक्षा। इसके लिए उपयोग की जाने वाली एक चीज को संभावित रूप से हानिकारक / अमान्य पुनर्स्थापित / संलग्न डीबी की पहचान करना है जो उन रिकॉर्ड से मेल नहीं खाती है। SQLCLR असेंबलियों को एक्सेस करने की कोशिश करना EXTERNAL_ACCESSया तो चिन्हित करना या UNSAFEलोड नहीं होगा यदि किसी ने सक्षम करने के कम सुरक्षित मार्ग को चुना है जो TRUSTWORTHYकि "dbo" SID पर निर्भर करता है क्योंकि इसमें लॉगिन से मिलान करने की आवश्यकता है जो EXTERNAL ACCESS ASSEMBLYया तो हैUNSAFE ASSEMBLYअनुमति। और जब उन दोनों सिस्टम कैटलॉग दृश्यों के बीच SID में कोई मिसमैच होता है, तो यह निर्धारित नहीं किया जा सकता है कि कौन सा उपयोग करना है, और एक संभावित सुरक्षा समस्या होने के लिए लाल-ध्वज के रूप में उपयोग किया जाता है। वास्तव में, मैं एसक्यूएल # के लिए इंस्टॉलेशन स्क्रिप्ट में इस स्थिति के लिए परीक्षण करता हूं कि किसी को उचित बदलाव करने के लिए सचेत किया जाए, ताकि एसक्यूएल सर्वर किसी बिंदु पर इसके बारे में शिकायत करने पर उन्हें इसका शिकार करने में समय बर्बाद न करना पड़े।

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