मैंने हमेशा सोचा था कि उपयोगकर्ता 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 में कोई मिसमैच होता है, तो यह निर्धारित नहीं किया जा सकता है कि कौन सा उपयोग करना है, और एक संभावित सुरक्षा समस्या होने के लिए लाल-ध्वज के रूप में उपयोग किया जाता है। वास्तव में, मैं एसक्यूएल # के लिए इंस्टॉलेशन स्क्रिप्ट में इस स्थिति के लिए परीक्षण करता हूं कि किसी को उचित बदलाव करने के लिए सचेत किया जाए, ताकि एसक्यूएल सर्वर किसी बिंदु पर इसके बारे में शिकायत करने पर उन्हें इसका शिकार करने में समय बर्बाद न करना पड़े।