2010-08-16 8 views
15

मैं माइक्रोसॉफ्ट एसक्यूएल सर्वर 2005 का उपयोग कर रहा हूं, और सामान्य रूप से एसक्यूएल के लिए अपेक्षाकृत नया हूं।एसक्यूएल सर्वर त्रुटि: "%" एक बाधा नहीं है। बाधा नहीं छोड़ सका। पिछली त्रुटियां देखें

डेटाबेस "सूचना" में दो तालिकाओं, "संसाधन" और "समूह_ स्रोत" के बीच एक रिश्ता है। संसाधनों में "resource_id" नामक समूह_ स्रोतों में एक विदेशी कुंजी, "आईडी" है। दोनों के बीच एक विदेशी कुंजी बाधा, "fk_gr_res_resources" है।

मुझे डेटाबेस स्वामी के रूप में स्थापित किया गया है, और पूर्ण पढ़ने/लिखने/बनाने/अनुमतियां हटाएं।

मैं विदेशी कुंजी बाधा हटाना चाहते हैं, तो मैं निम्न क्वेरी निष्पादित:

ALTER TABLE [Information].[group_resources] DROP CONSTRAINT fk_gr_res_resources 

और निम्न त्रुटि प्राप्त:

'fk_gr_res_resources' is not a constraint. Could not drop constraint. See previous errors.

मैं, संदेह में हूँ, क्योंकि यह एक बाधा है , और कोई वर्तनी त्रुटियां नहीं हैं। क्या मैं इसे अनुचित तरीके से हटाने जा रहा हूं? क्या मैं गलत तालिका से बाधा को हटा रहा हूं? किसी भी सुझाव की सराहना की जाएगी, & कृपया मुझे ज्वाला न करें: मैं सब के बाद एसक्यूएल में नया हूं।

+2

क्या आपने दूसरी तालिका से बाधा को हटाने की कोशिश की है? यह आपके प्रश्न का उत्तर देगा कि आप इसे सही जगह से हटा रहे हैं या नहीं। – SqlRyan

+0

हां- मैंने "gropus_resources" और "संसाधन" दोनों से बाधा को हटाने का प्रयास किया है। मुझे अब भी वही त्रुटि मिलती है। सलाह के लिये धन्यवाद। – amanda

उत्तर

21

आपको यह त्रुटि हो रही है:

Msg 3728, Level 16, State 1, Line 1 
'fk_gr_res_resources' is not a constraint. 
Msg 3727, Level 16, State 0, Line 1 
Could not drop constraint. See previous errors. 

क्योंकि FK बाधा मौजूद नहीं है!

आप यह सुनिश्चित करें किInformationसही स्कीमा नाम और नहींdbo है?

1. इस एसक्यूएल साबित होगा कि FK मौजूद नहीं है:

SELECT * FROM sysobjects WHERE name = 'fk_gr_res_resources' 

2. ओह, मैं अपने मूल जवाब में गलत था, यहाँ एसक्यूएल सर्वर के लिए सही सिंटैक्स है:

ALTER TABLE <table_name> 
DROP CONSTRAINT <foreignkey_name> 

3. अपने डेटाबेस के लिए उदाहरण:

IF EXISTS (SELECT * FROM sysobjects WHERE name = 'fk_gr_res_resources') 
BEGIN 
    ALTER TABLE Group_Resources 
    DROP CONSTRAINT fk_gr_res_resources 
END; 

4. इस चलाने की कोशिश करें:

IF NOT EXISTS (SELECT * FROM sysobjects WHERE name = 'fk_gr_res_resources') 
BEGIN 
    ALTER TABLE Group_Resources 
    ADD CONSTRAINT fk_gr_res_resources 
    FOREIGN KEY (resource_id) 
    REFERENCES Resources(id) /* make sure Resources.id is a PRIMARY KEY */ 
END; 

5. फिर इस कोशिश करते हैं और देखते हैं अगर आप अभी भी है कि त्रुटि मिलती है:

ALTER TABLE Group_Resources 
DROP CONSTRAINT fk_gr_res_resources 

अन्य वाक्य रचना MySQL के लिए किया गया था, क्षमा करें:

ALTER TABLE <table_name> 
DROP FOREIGN KEY <foreignkey_name> 

ओएमजी टट्टू को सही करने के लिए धन्यवाद!

+0

कोड उदाहरण के लिए धन्यवाद। मैं निम्नलिखित में डाल: "टेबल बदल ड्रॉप विदेशी कुँजी " और यह इस त्रुटि दिया: "कीवर्ड 'विदेशी' के पास गलत वाक्य रचना।" दूसरे उदाहरण के साथ एक ही सौदा। (सब कुछ ठीक से वर्तनी है, वैसे, इसलिए मुझे यकीन नहीं है कि मुझे त्रुटियां क्यों मिल रही हैं: वाक्यविन्यास सही दिखता है।) – amanda

+0

@OMG टट्टू: मेरी गलती को इंगित करने के लिए धन्यवाद, और नीचे मतदान नहीं! – JohnB

+0

इस उत्तर ने मेरी समस्या हल की :) @ जॉन बी और @ ओएमजी टट्टू: आपके सुझावों के लिए बहुत बहुत धन्यवाद !! – amanda

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