2009-03-05 8 views
9

में 'तालिका बनाएं ... जैसे ...' के बराबर क्या है मैं SQL सर्वर (मैं एक SQL सर्वर नोब) के साथ काम कर रहा हूं और एक तालिका को बदलने की कोशिश कर रहा हूं। मैं CREATE TABLE LIKE सुरक्षित रूप से स्टोर करना चाहता हूं डेटा जबकि मैं कुंजी और बाधाओं और अन्य सभी rigamorole एसक्यूएल सर्वर जब मूल मेज पर फेरबदल लेकिन मैं उस आदेश के लिए एक मैच खोजने के लिए नहीं कर पाए हैं की आवश्यकता के लिए लगता है कि ... ड्रॉपएसक्यूएल सर्वर

+0

मैं इस उद्देश्य के लिए दृश्य स्टूडियो एसक्यूएल सर्वर एक्सप्लोरर का उपयोग में सम्मिलित किया जाएगा, यह डेटाबेस संरचना के स्वचालित अपडेट अनुमति देता है। – Ginden

उत्तर

14

आप क्या कर सकते हैं

चयन करें * MyTable

फिर अपने MyTable को संशोधित करें, और अपने डेटा को वापस कॉपी करें। अन्य मेरे द्वारा देखे गए दृष्टिकोण एक नई टेबल बनाने के लिए इसे Mytable_Tmp (एक अस्थायी तालिका नहीं) कहते हैं, जो आपकी नई तालिका होगी।

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

या आप डेटाबेस की तुलना करने वाले कई उत्कृष्ट उपकरणों में से एक प्राप्त कर सकते हैं और अंतर स्क्रिप्ट या वीएसटीएस डीबी संस्करण (डेवलपर के साथ आता है) उत्पन्न कर सकते हैं और आप एक प्रोजेक्ट फ़ाइल से डीबी में एक diff स्क्रिप्ट कर सकते हैं।

संपादित

जब आप MyTable से चयन चलाने * #MyTable जांच, एसक्यूएल सर्वर #MyTable नामक एक नया अस्थायी तालिका कि प्रत्येक स्तंभ और अपने चुनिंदा खंड से डेटा प्रकार से मेल खाता है बनाता है। इस मामले में हम * चुन रहे हैं इसलिए यह मायटेबल से मेल खाएगा। यह केवल उन स्तंभों को बनाता है जो डिफ़ॉल्ट, प्रतिबाधा अनुक्रमणिका या किसी और चीज की प्रतिलिपि नहीं बनाते हैं।

+0

मेरा प्रश्न यह नहीं है कि डेटा को पहले से मौजूद मौजूदा temp तालिका में कैसे रखा जाए। मैं एक सारणी तालिका बनाने के बारे में अधिक चिंतित हूं जो मौजूदा तालिका से मेल खाता है। मेरे पास दर्जनों टेबल हैं जिन्हें मुझे बदलने की ज़रूरत है और मैं हाथ से अस्थायी तालिकाओं को बनाना नहीं चाहता हूं। – Ichorus

+0

आह! बहुत अच्छा! धन्यवाद! – Ichorus

+0

और चाबियाँ? सूचकांक? विदेशी कुंजी? –

17

आप एक ही संरचना को फिर से बनाना चाहते हैं?

कैसे इस

SELECT * 
into test 
FROM myRealTable 
where 0=1 

के बारे में कोई डेटा नई तालिका

+2

myRealTable से परीक्षण में शीर्ष 0 * चुनें, उसी परिणाम को भी प्राप्त करेगा –