डेटाबेस गुण संवाद बॉक्स में फ़ाइलें पृष्ठ से डेटाबेस के स्वामित्व को बदलने में त्रुटि


10

मैंने एक डेटाबेस बहाल किया है और एक नया उपयोगकर्ता (वही उपयोगकर्ता जिससे मैंने लॉगिन किया है) db_owner के रूप में बनाया है। अब जब मैं देखना चाहता था डेटाबेस आरेख में त्रुटि हुई

डेटाबेस आरेख समर्थन ऑब्जेक्ट स्थापित नहीं किया जा सकता क्योंकि इस डेटाबेस में कोई मान्य स्वामी नहीं है। जारी रखने के लिए, पहले डेटाबेस गुण संवाद बॉक्स या एक वैध लॉगिन के लिए डेटाबेस के मालिक को सेट करने के लिए ऑल्टर ऑथराइजेशन स्टेटमेंट के फाइल पेज का उपयोग करें, फिर डेटाबेस सपोर्ट ऑब्जेक्ट जोड़ें

अब जब मैंने डेटाबेस प्रॉपर्टीज के फाइल पेज से ओनरशिप बदलने की कोशिश की तो मुझे त्रुटि हो रही है

डेटाबेस 'ABC' के लिए सेट स्वामी विफल रहा। (Microsoft.SqlServer.SMO) अतिरिक्त जानकारी: एसएमओ में एक अपवाद हुआ है प्रस्तावित नए डेटाबेस के मालिक जेम्स-पीसी \ जेम्स को इस डेटाबेस में उपयोगकर्ता जेम्स के रूप में मैप किया गया है। पैरामीटर नाम: जेम्स-पीसी \ जेम्स "

कृपया मुझे इस समस्या को ठीक करने में मदद करें ताकि मैं किसी अन्य सिस्टम से डेटाबेस बैकअप को पुनर्स्थापित करने के बाद इस कंप्यूटर पर डेटाबेस आरेख देख पाऊं।

जवाबों:


8

डेटाबेस मालिक sys.server_principals में लॉगिन है जो डेटाबेस का मालिक है, जैसा कि इसके SID द्वारा परिभाषित किया गया है। एक पुनर्स्थापना के बाद यह आसानी से हो सकता है कि डेटाबेस को पुनर्स्थापित करने के लिए उपयोग किया गया लॉगिन वह लॉगिन नहीं है जो डेटाबेस का पिछला स्वामी था। (यह तब भी होने की संभावना है जब सर्वर के बीच डेटाबेस ले जाया गया हो।)

तो, तीन सेटिंग्स हो सकती हैं जिनसे आपको परेशानी हो रही है

  1. डेटाबेस owner_sid डेटाबेस के db_owner साइड के बराबर नहीं है। आप डेटाबेस एबीसी द्वारा इसके लिए तुलना कर सकते हैं:

    चयन करें owner_sid से sys.dat डेटाबेस जहां नाम = 'ABC';

    ABC.sys.database_principals से साइड का चयन करें, जहां नाम = 'dbo' है;

  2. आगे आपको एक संदेश मिल रहा है जिसमें कहा गया है कि आपका प्रस्तावित डेटाबेस owner_sid भी sys.database_principals में उपयोगकर्ता के रूप में मौजूद है। हम प्रस्तावित मालिक को मैप करने के बारे में त्रुटि संदेश से यह जानते हैं।

तो आपके कदम हैं:

 USE ABC;
 DROP USER James;
 ALTER AUTHORIZATION ON DATABASE::ABC TO [James-PC\James];

आपने उस उपयोगकर्ता को हटा दिया है जिसकी आवश्यकता नहीं है, क्योंकि आप इसे dbo बना रहे हैं। एक बार जब यह रास्ते से बाहर हो जाता है, तो आपके लॉगिन को डेटाबेस का मालिक बनाया जा सकता है।

EDIT: एबीसी डेटाबेस से जेम्स उपयोगकर्ता को हटाने के लिए आप SSMS का उपयोग कर सकते हैं। तब आप डेटाबेस के मालिक को सेट करने के लिए डेटाबेस गुण फ़ाइल टैब पर लौट सकते हैं। (क्षमा करें, मैं स्क्रिप्ट के बारे में सोचता हूं।)


1
यह दिलचस्प है, प्रबंधन स्टूडियो में लॉगिन जो डीओबी बनाया गया था वह आपका_डीबी / सिक्योरिटी / यूजर्स के अंतर्गत नहीं आता है,
1

-3
  1. राइट क्लिक डेटाबेस
  2. गुण
  3. फ़ाइलें चुनें
  4. सही / सेट मालिक (अपने pc \ _ के लिए, या ब्राउज़ करें और "..." पर क्लिक करके चुनें)

यह मेरे लिए SQL सर्वर प्रबंधन स्टूडियो v17.1 में काम किया


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