2011-01-24 9 views
11

में सम्मिलित डेटा स्क्रिप्ट उत्पन्न करने का प्रयास करते समय चक्रीय विदेशी कुंजी त्रुटियों के आसपास हो रहा है मैं SQL सर्वर 2008 स्क्रिप्ट विज़ार्ड का उपयोग कर कुछ सम्मिलित स्क्रिप्ट उत्पन्न करने का प्रयास कर रहा हूं। स्क्रिप्ट उत्पन्न करने पर, मुझे निम्न त्रुटि मिलती है:एसक्यूएल 2008

"चयनित डेटाबेस में एक चक्र बनाने वाली विदेशी कुंजी होती है। प्रकाशन डेटा केवल चक्रीय विदेशी कुंजी संबंधों वाले डेटाबेस के लिए समर्थित नहीं है।"

मैंने डेटाबेस में सभी बाधाओं को अक्षम और निकालने का प्रयास किया है। त्रुटि अभी भी हो रही है। क्या इसके आसपास पाने के लिए कोई रास्ता नहीं है? संभवतः एसक्यूएल स्क्रिप्ट उत्पन्न करते समय बाधाओं को अनदेखा करते हैं।

+1

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

+0

एचएलजीईएम ने क्या कहा है इसके अलावा, यदि आप सीधे स्क्रिप्ट का उपयोग कर डेटा को सम्मिलित नहीं कर सकते हैं, तो जीयूआई कैसे कर सकता है? – Thomas

उत्तर

0

आईएमएचओ एचएलजीईएम की प्रतिक्रिया से पहले थोड़ा सा घुमावदार है - कभी-कभी चक्रीय संदर्भ होने के वैध कारण होते हैं।

मैंने कहा कि मुझे लगता है कि स्क्रिप्ट जनरेटर अति संवेदनशील है। ऐसा लगता है कि किसी भी पीके/एफके जोड़ी के बारे में "चक्रीय" है और मैं अपने डेटाबेस की एक प्रति का उपयोग करने के लिए समाप्त हुआ, जिससे मैं "चक्रीय" त्रुटि से बाहर निकलने के लिए निर्यात प्राप्त करने के लिए सभी चाबियाँ छीन लेता था। निम्नलिखित की तरह एक स्क्रिप्ट आपको वैश्विक स्तर पर कुंजी छोड़ने में मदद कर सकती है लेकिन निश्चित रूप से सावधान रहें!

चयन 'परिवर्तन तालिका' + OBJECT_NAME (parent_obj) + 'ड्रॉप बाधा' + [नाम] sysobjects जहां ('एफ') में xtype

[मैं इस बारे में नहीं था से स्क्रिप्ट के रूप में । देखें http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=46682]

आगे यह टूल फीडबैक के मामले में बहुत बेकार है क्योंकि इसकी रिपोर्ट को सीमित करने के लिए पर्याप्त विवरण प्रदान नहीं किया जाता है चक्रीय संदर्भ मौजूद हैं।

अंत में मुझे यह टूल मिला कि मुझे यादृच्छिक टाइमआउट मिलता है। एक अन्य अवलोकन जिसने मैंने बड़े पैमाने पर शोध नहीं किया है, मुझे लगता है कि चक्रीय त्रुटि के बाद इसे आपके कैश को साफ़ करने के बाद टूल को स्क्रैच से शुरू करने की आवश्यकता हो सकती है क्योंकि जब मैं पिछला बटन बनाम दोबारा शुरू करता हूं तो अलग व्यवहार देखता हूं।

0

आप स्क्रिप्ट विकल्प सेट करने से डेटा निर्यात कर सकते हैं - "स्क्रिप्ट चेक प्रतिबन्ध" गलत

क्षमा करें यह काम नहीं करेगा :(

आप निर्धारित करने के लिए जो तालिका समस्या पैदा कर रहा है होगा

18

विज़ार्ड पेज पर जहां आप सभी डेटाबेस ऑब्जेक्ट्स या विशिष्ट ऑब्जेक्ट्स का चयन करने के लिए रेडियो बटन चुनते हैं, तो सभी डेटाबेस ऑब्जेक्ट्स का चयन करना सुनिश्चित करें। किसी कारण से टूल को वहां उत्पन्न करने के लिए कुछ चाहिए, भले ही आप टेबल सम्मिलित स्क्रिप्ट चाहते हों

एक बार मैंने उस डेटाबेस बटन को सभी डेटाबेस ऑब्जेक्ट्स में बदल दिया, और स्क्रिप्ट के प्रकार उत्पन्न करने के लिए उन्नत विकल्प का चयन किया = केवल डेटा, यह सभी तरह से काम करता था।

+1

"सभी डेटाबेस ऑब्जेक्ट्स" चाल करता है - धन्यवाद। –

+0

एक सम्मेलन से पहले स्थानीय सर्वर पर डेमो डेटा डंप करना और इंटरफेस बदल गया था और अचानक यह काम नहीं कर रहा था (मुझे लगता है कि मैंने एसएसएमएस या कुछ अपडेट किया है) ... यह काम करता है और मेरे बट को बचाता है, धन्यवाद! – Erikest

+0

और यदि मैं किसी अन्य डेटाबेस में सम्मिलित कथन निष्पादित करना चाहता हूं, तो क्या मुझे अन्य ऑब्जेक्ट्स के लिए एसक्यूएल निष्पादित करना चाहिए ?? – mounaim

2

मैं एक ही समस्या आ रहा था, और मैं आज की खोज की है कि आप एक 2008 R2 डीबी के खिलाफ एसक्यूएल सर्वर प्रबंधन Studio 2012 का उपयोग कर सकते हैं और आप त्रुटि नहीं मिलेगा: फाइल करने के लिए

Sql Server Scripting Data Only: Workaround for CyclicalForeignKeyException?

2

सहेजा जा रहा है बनामएक नई क्वेरी संपादक विंडो में यह मेरे लिए प्रबंधन स्टूडियो 2008 पर काम करने लगता है: \

+1

निश्चित रूप से एसएसएमएस में एक बग। अपने समाधान से परे, यदि आप बैक बटन दबाते हैं और एक नई क्वेरी विंडो (बस रेडियो बटन बदलना) पर उत्पन्न करने की एक नई कोशिश देते हैं, तो यह उत्पन्न होता है! –

0

मुझे वही त्रुटि मिल रही थी क्योंकि मेरे पास ऑब्जेक्ट सूची में कोई तालिका नहीं चुनी गई थी (एक बड़ी तालिका जिसे मैं बनाना चाहता था एक और लिपि में)। सभी तालिकाओं का चयन करने से समस्या हल हो गई।

पीडी: शायद थोड़ा देर हो चुकी है, लेकिन खोज में CyclicalForeignKeyException Google में पहले मिलता है।

11

मुझे ओपी के समान समस्या थी। फिर मैंने फिर से प्रयास किया, उन्नत विकल्पों में, "डेटा के स्क्रिप्ट के प्रकार" विकल्प के लिए, मैंने केवल डेटा के बजाय "स्कीमा और डेटा" चुना। फिर यह चक्रीय चाबियों के बारे में शिकायत किए बिना मेरे लिए काम किया।

+0

और यह क्यों काम करता है? – Michael

+0

यह 1 टेबल के लिए एक अच्छा समाधान है, केवल डेटा के बजाय "स्कीमा और डेटा" के साथ मेरे लिए काम करता है। फिर यह INSERT को छोड़ने के लिए आउटपुट स्क्रिप्ट को संपादित करने का एक मामला है (और पहले और बाद में किसी भी सेट IDENTITY_INSERT चालू/बंद)। पूरे डीबी पटकथा से ज्यादा आसान है! धन्यवाद –

+0

यह मेरे लिए कई तालिकाओं के लिए काम करता था, भले ही विदेशी कुंजी स्क्रिप्टिंग अक्षम हो। आदि धन्यवाद – Sk93

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