5

में विदेशी कुंजी को संदर्भित किए बिना क्लस्टरर्ड प्राथमिक कुंजी को गैर-क्लस्टर में परिवर्तित करने के लिए कैसे करें मैंने GUID कॉलम पर क्लस्टर प्राथमिक कुंजी बनाने में गलती की है। ऐसी कई सारणीयां हैं जो परिभाषित विदेशी कुंजी के साथ उस तालिका को संदर्भित करती हैं। तालिका का आकार महत्वपूर्ण नहीं है।SQL सर्वर 2005

मैं इसे किसी भी विदेशी कुंजी या यहां तक ​​कि प्राथमिक कुंजी बाधा को मैन्युअल रूप से छोड़ने और पुनर्निर्माण किए बिना क्लस्टर से गैर-क्लस्टर में परिवर्तित करना चाहता हूं।

क्या एमएस एसक्यूएल 2005 में यह हासिल करना संभव है और कैसे हाँ?

क्या यह ऑनलाइन उपलब्ध है (डीबी डाउन टाइम के बिना) यदि हां?

उत्तर

3

आप पहले अद्वितीय नॉनक्लस्टर्ड एनसी इंडेक्स बनाने का प्रयास कर सकते हैं, फिर क्लस्टर पीके ड्रॉप करें। एफके को इस अन्य सूचकांक को पहचानना चाहिए (लेकिन शायद नहीं: कभी कोशिश नहीं की गई)।

जब आप क्लस्टर पीके ड्रॉप करने के लिए ALTER तालिका चलाते हैं तो ONLINE विकल्प का उपयोग करें। हालांकि, यह केवल एंटरप्राइज़ संस्करण में उपलब्ध है।

ALTER TABLE Mytable DROP CONSTRAINT PK_Mytable WITH (ONLINE = ON) 

आप ADD CONSTRAINT बिट के लिए ऑनलाइन उपयोग नहीं कर सकते हैं।

असल में, अपने विकल्पों को अवरुद्ध, या किसी अन्य तालिका पहले बनाने और अधिक डेटा ले जाए बिना

+2

सीमित हैं ... मुझे लगता है मैं शब्द "कोशिश" ... – alpav

+0

@alpav बिना एक जवाब मिल सकता है चाहते हैं: दुर्भाग्य से, मैं 'शायद बस बहुत छोड़ दो, ठीक करो, फिर से बनाएँ। और अगली बार याद रखने की कोशिश करें :-) इसे 200 मिलियन पंक्ति तालिका के साथ आज़माएं: यह दर्दनाक है ... – gbn

+2

एफके अन्य सूचकांक को पहचान नहीं पाते हैं। जब मैं एक और अद्वितीय बाधा उत्पन्न करने के बाद भी पीके बाधा को छोड़ने की कोशिश करता हूं और वैकल्पिक तालिका तालिका 2 NOCHECK CONSTRAINT FK_Table2_Table1 के साथ विदेशी कुंजी बाधा को अक्षम करता है, तो यह शिकायत करता है कि "बाधा 'PK_Table1' तालिका 'तालिका 2', विदेशी कुंजी बाधा 'FK_Table2_Table1' द्वारा संदर्भित की जा रही है। केवल एफके काम छोड़ना। – alpav