2009-12-18 7 views
5

हटाने का प्रयास करते हैं और मैं निम्नलिखित त्रुटि हो रही है:त्रुटि मैं एक डेटाबेस से किसी उपयोगकर्ता के स्कीमा नष्ट करने के लिए कोशिश कर रहा हूँ डेटाबेस उपयोगकर्ता खाते स्कीमा

TITLE: Microsoft SQL Server Management Studio 
------------------------------ 

Drop failed for Schema 'ext_owner'. (Microsoft.SqlServer.Smo) 

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.4035.00&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Drop+Schema&LinkId=20476 

------------------------------ 
ADDITIONAL INFORMATION: 

An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo) 

------------------------------ 

Cannot drop schema 'ext_owner' because it is being referenced by object 'getroles'. (Microsoft SQL Server, Error: 3729) 

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.4035&EvtSrc=MSSQLServer&EvtID=3729&LinkId=20476 

------------------------------ 
BUTTONS: 

OK 
------------------------------ 

getroles क्या आपत्ति है?

मैं संदर्भ से कैसे छुटकारा पा सकता हूं ताकि मैं पुराने उपयोगकर्ता खाते को हटा सकूं?

+0

इस त्रुटि का कारण क्या है? इसके अलावा, प्रत्येक उपयोगकर्ता की अपनी स्कीमा है ?! निश्चित रूप से मैं गलत समझता हूँ। –

+0

मैं उपयोगकर्ता को हटाने की कोशिश कर रहा हूं और ऐसा करने के लिए यह पूछता है कि क्या मैं स्कीमा को हटाना चाहता हूं। मैं यह सब करने के लिए कर रहा हूं यह सही है उपयोगकर्ता पर क्लिक करें, हटाएं क्लिक करें। – Jason

+1

आपको ऐसे परिचालनों को संसाधित करने के लिए उपयोग किए गए डीडीएल आदेशों से परिचित होना चाहिए। सभी जीयूआई आपके द्वारा इस जानकारी को छिपाते हैं, और यह गलत समझने के लिए आपके लिए कठिन बनाते हैं। एसएसएमएस में अधिकांश संवाद आपको शीर्ष पर एक स्क्रिप्ट बटन पर क्लिक करने की अनुमति देंगे, और यह उन चीज़ों के लिए डीडीएल सीखने का एक त्वरित तरीका है जिनके लिए आप सामान्य रूप से जीयूआई पर भरोसा कर सकते हैं (और जब आप इन्हें प्राप्त करते हैं तो क्या हो रहा है पर अधिक जानकारी प्राप्त करनी चाहिए त्रुटि संदेश)। –

उत्तर

7
SELECT * FROM sys.objects 
WHERE name = 'getroles' 
AND schema_id = SCHEMA_ID('ext_owner'); 

तब कार्य करें:

DROP <object type> ext_owner.getroles; 

--या

ALTER SCHEMA <some other schema> TRANSFER ext_owner.getroles; 

आपको इसे कई बार दोहराना होगा। आप एक स्कीमा नहीं छोड़ सकते जो खाली नहीं है।

+0

जब मैं स्टेटमेंट निष्पादित करता हूं तो कुछ भी दिखाई नहीं देता है। मुझे स्कीमा 'बॉब 222' नहीं मिल सकता है क्योंकि इसे ऑब्जेक्ट 'LanguagePackImport' द्वारा संदर्भित किया जा रहा है –

2

आप system table sys.objects से पूछ सकते हैं कि क्या हो सकता है पर अधिक जानकारी प्राप्त करने का प्रयास करें।

प्रयास करें

SELECT * FROM sys.objects WHERE name LIKE '%getroles%' 

यह तुम क्या वस्तु है पर कुछ जानकारी देना चाहिए। उस समय आप या तो इसे छोड़ सकते हैं या स्कीमा को बदलने का फैसला कर सकते हैं ताकि इसे संदर्भित नहीं किया जा सके।

2

उपयोग करके देखें:

SELECT * FROM sys.objects WHERE name = 'getroles' 

मेरा अनुमान है कि यह एक समारोह या संग्रहीत प्रक्रिया है कि उपयोगकर्ता संभवतः गलती से अपने स्वयं के स्कीमा के तहत बनाया जो (है यह ड्रॉप (अगर यह नहीं किया जा रहा है) और आप होना चाहिए। । अच्छा जाना

संबंधित मुद्दे