2009-05-14 14 views
12

मुझे SQL Server 2005 में डेटाबेस आरेख के मालिक को बदलने की आवश्यकता है। वर्तमान में यह मेरे स्वामित्व में है (डोमेन \ username.diagramName) और मैं इसे स्वामित्व में बदलना चाहता हूं डीबीओ (dbo.diagramName) द्वारा। मैंने सोचा कि मैं sp_changeobjectowner का उपयोग कर सकता हूं, लेकिन मेरा मानना ​​है कि केवल टेबल, संग्रहित प्रक्रियाओं आदि के लिए है ... मुझे लगता है कि यह बहुत आसान है, मैं सिर्फ Google खोज के माध्यम से कुछ भी नहीं ढूंढ पा रहा हूं।SQL सर्वर 2005 में डेटाबेस आरेख का स्वामी बदलें

उत्तर

17

अंत में, मैं दूर करने के लिए है कि उपयोगकर्ताओं को स्कीमा उसके बाद निम्न अद्यतन चलाने ...

-- to identify the diagram id, name, & owner 

select * 
from dbo.sysdiagrams 


-- to manually change the owner of a diagram 
-- note: i derived that the principal_id =1 for dbo from above query 

update 
dbo.sysdiagrams set principal_id =1 where diagram_id = 1 

मैं मदद मैं परिसर में एक डीबीए यहां से जरूरत हो रही समाप्त हो गया था।

+0

जैसा कि 'SELECT * से sys.database_principals' चलाकर देखा जा सकता है, 'principal_id' संख्या 1 'dbo' प्रिंसिपल है। मुझे कल्पना है कि कोई भी 'principal_id' 0 पर विचार कर सकता है, जो सार्वजनिक है। – jpmc26

2

यह आलेख बताता है कि आपको डीबी के उपयोगकर्ता के रूप में स्वयं को हटाना होगा। इसे अपनी पसंद के उपयोगकर्ता के साथ खोलें।

http://msdn.microsoft.com/en-us/library/ms171972(VS.80).aspx

+0

जब मैं उपयोगकर्ता मैं हटाने का प्रयास ... शीर्षक: Microsoft SQL सर्वर प्रबंधन स्टूडियो ड्रॉप उपयोगकर्ता 'domain \ username' के लिए विफल रहा है। (Microsoft.SqlServer.Smo) मदद के लिए, पर क्लिक करें: http://bit.ly/gHA9 अतिरिक्त जानकारी: जबकि एक Transact SQL कथन या बैच को क्रियान्वित एक अपवाद हो गई। (माइक्रोसॉफ्ट.SqlServer.ConnectionInfo) डेटाबेस प्रिंसिपल डेटाबेस में एक स्कीमा का मालिक है, और इसे हटाया नहीं जा सकता है। (माइक्रोसॉफ्ट एसक्यूएल सर्वर, त्रुटि: 15138) सहायता के लिए, क्लिक करें: http://bit.ly/2lzKpz – Jason

+0

मुझे लगता है कि 'जेसन' नामक एक स्कीमा है जिसे आपको उस स्कीमा से ऑब्जेक्ट को बदलने की आवश्यकता होगी। http://msdn.microsoft.com/en-us/library/ms173423.aspx –

+0

मैंने स्कीमा हटा दिया और उपयोगकर्ता को हटाने में सक्षम था। जब मैं आरेख पर वापस गया, तो मालिक फिर सार्वजनिक हो गया। अभी भी मैं क्या चाहता हूँ। कोई और सुझाव? – Jason

0

हालांकि यह इस मामले में मदद की है नहीं होगा (क्योंकि यह सिर्फ फिर से पैदा करता है पूरे sysdiagrams पंक्ति), ये स्क्रिप्ट

ScriptDiagram2005 या ScriptDiagram2008

आप के सम्मिलित स्क्रिप्ट बनाने की अनुमति आरेख 'सामग्री', स्रोत डेटाबेस (या बैकअप, या लिपि गई प्रति, या जो कुछ भी) के खिलाफ फिर से चलाने के लिए। आप आसानी से (जानते हैं कि अब आप के बारे में क्या जानते हैं) एक नए मालिक के साथ चित्र को दोबारा बनाएं।

बस खोजने के लिए और स्क्रिप्ट

INSERT INTO sysdiagrams ([name], [principal_id], [version], [definition]) 

वास्तविक लाभ स्रोत नियंत्रण करने के लिए/बैकअप पाठ फ़ाइल में सक्षम किया जा रहा है में इस बयान के बाकी संपादित करें ...

14
UPDATE dbo.sysdiagrams 
SET principal_id = 1 

सेट एक यदि आवश्यकता हो तो खंड कहाँ है। उपर्युक्त पाठ से पता चलता है कि आपको डेटाबेस से उपयोगकर्ता को हटाने की आवश्यकता है, लेकिन मुझे ऐसा करने की ज़रूरत नहीं थी। मैं SQL2008 आर 2 का उपयोग कर रहा हूँ।

5
USE [db_name] 
UPDATE dbo.sysdiagrams 
SET principal_id = 1 

यदि उपरोक्त कथन काम नहीं है, तो आप dbo.sysdiagrams पर राइट क्लिक के साथ इस मेज पर एक संपादन लेने के लिए और संपादित करें शीर्ष 200 पंक्तियों का चयन कर सकते हैं, तो आप सभी रिकॉर्ड मैन्युअल रूप से 1

करने के लिए सेट के लिए principal_id स्तंभ सेट कर सकते हैं
+0

कोई एसक्यूएल विधि मेरे लिए काम नहीं करती है। मैं पहले से पूरी तरह से समझ नहीं पाया था कि आप क्या मतलब है @hamed aj लेकिन हाँ, सिस्टम टेबल्स के तहत, अधिक स्पष्ट होने के लिए, dbo.sysdiagrams पर आरटी क्लिक करें और शीर्ष 200 पंक्तियों को संपादित करना चुनें। तालिका में जिसे प्रदर्शित किया जाता है, आपको बस अपनी रुचि के आरेख को परिभाषित करने वाली पंक्ति मिलती है, और प्रिंसिपल_आईडी में मान को 1 में बदलें। आरेख सूची को रीफ्रेश करें और आप इसे मालिक के रूप में डीबीओ में अपडेट करेंगे। –