SQL स्क्रिप्ट बनाएं जो डेटाबेस और टेबल बनाते हैं


102

मेरे पास एक SQL डेटाबेस और तालिकाओं हैं जिन्हें मैं दूसरे SQL सर्वर में दोहराना चाहूंगा। मैं एक एसक्यूएल स्क्रिप्ट बनाना चाहूंगा जो डेटाबेस और टेबल्स को एक स्क्रिप्ट में बनाता है।

मैं प्रत्येक मामले (डेटाबेस और टेबल्स) के लिए SQL प्रबंधन स्टूडियो का उपयोग करके "क्रिएट" स्क्रिप्ट बना सकता हूं, लेकिन मैं जानना चाहूंगा कि क्या दोनों "क्रिएट" स्क्रिप्ट्स को सिंगल स्क्रिप्ट में संयोजित करना पर्याप्त होगा।

धन्यवाद।


26
क्या आप कृपया स्वीकृत उत्तर बदल सकते हैं?
स्कोलिमा

1
@ स्कोलिमा सहमत हो गया, स्वीकृत उत्तर (क्लेटन द्वारा) अंततः परिणाम प्राप्त करेगा, लेकिन सीजेएम का उत्तर बहुत तेज है
elmer007

जवाबों:


18

SQL सर्वर प्रबंधन स्टूडियो में आप उस डेटाबेस पर राइट क्लिक कर सकते हैं जिसे आप प्रतिकृति करना चाहते हैं, और उस स्क्रिप्ट को किसी अन्य सर्वर पर उस डेटाबेस को दोहराने के लिए उपकरण बनाने के लिए "स्क्रिप्ट डेटाबेस" का चयन करें। आप जिस तालिका को बनाना चाहते हैं, उसके लिए आप इस प्रक्रिया को दोहरा सकते हैं और फिर फ़ाइलों को एकल SQL फ़ाइल में मर्ज कर सकते हैं। अपना डेटाबेस बनाने से पहले लेकिन किसी भी टेबल निर्माण से पहले एक स्टेटमेंट जोड़ना न भूलें।

SQL सर्वर के हाल के संस्करणों में आप SSMS में एक फ़ाइल में इसे प्राप्त कर सकते हैं।

  1. एक डेटाबेस पर राइट क्लिक करें।
  2. कार्य
  3. लिपियों का सृजन करें

यह एक विज़ार्ड लॉन्च करेगा जहाँ आप पूरे डेटाबेस या बस भागों को स्क्रिप्ट कर सकते हैं। ऐसा करने का कोई T-SQL तरीका प्रतीत नहीं होता है।

SQL सर्वर स्क्रिप्ट जनरेट करें


182
स्क्रॉल करते रहें ... CJM का तरीका 99.99999% बेहतर है
ewitkows

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

वैसे भी ऐसा करने के लिए मानक SQL उदाहरण के लिए mysql है?
बेंजामिन गुडाक्रे

378

हालाँकि क्लेटन का जवाब आपको वहां (अंततः), SQL2005 / 2008 / R2 / 2012 में मिल जाएगा, आपके पास बहुत आसान विकल्प है:

डेटाबेस पर राइट-क्लिक करें, चुनें Tasksऔर फिर Generate Scripts, जो स्क्रिप्ट विज़ार्ड लॉन्च करेगा। यह आपको एक एकल स्क्रिप्ट उत्पन्न करने की अनुमति देता है जो तालिका / अनुक्रमित और बाधाओं / संग्रहीत प्रक्रियाओं / कार्यों / उपयोगकर्ताओं / आदि सहित पूरे डेटाबेस को फिर से बना सकता है। विकल्पों की एक भीड़ है जिसे आप आउटपुट को अनुकूलित करने के लिए कॉन्फ़िगर कर सकते हैं, लेकिन इसमें से अधिकांश स्व व्याख्यात्मक है।

यदि आप डिफ़ॉल्ट विकल्पों से खुश हैं, तो आप कुछ ही सेकंड में पूरा काम कर सकते हैं।

यदि आप डेटाबेस में डेटा को फिर से बनाना चाहते हैं (INSERTS की एक श्रृंखला के रूप में) तो मैं SSMS टूल्स पैक (SQL 2008 संस्करण के लिए मुफ़्त, SQL 2012 संस्करण के लिए भुगतान ) की भी सिफारिश करूँगा ।


5
यह उत्कृष्ट है, मैंने बस यही किया और मुझे एक टन समय बचाया।
बिल सैमब्रोन

@CJM मैं सोच रहा हूँ मैं तुम्हें प्यार करता हूँ! :-P
पिएरो अल्बर्टो

मैंने उन चरणों का ठीक से पालन किया, लेकिन मुझे अभी भी पूरी तरह से त्रुटियों के टन मिलते हैं और मैं उन्हें सही नहीं कर सकता। कोई मदद?
14:17 पर user1789573

मेरा सुझाव है कि आप इससे संबंधित अपना प्रश्न पोस्ट करें - सुनिश्चित करें कि आपने अपने द्वारा उठाए गए कदमों और आपके द्वारा प्राप्त त्रुटियों के बारे में विवरण पोस्ट किया है।
CJM

@ user1789573 - जैसा कि शवाना जैकब्स ने लिखा है - SSMS निर्भरता के बारे में परवाह नहीं करता है (SSE devteam पर शर्म!) इसलिए आपको "डिज़ाइन द्वारा" त्रुटियों के टन होंगे। SSMS की इस कमजोरी से निपटने के लिए Shawna Jacobs asnwer का अनुसरण करें।
आंद्रेजेज मार्टिना

9

एक उत्कृष्ट स्पष्टीकरण यहां पाया जा सकता है: SQL सर्वर प्रबंधन स्टूडियो में स्क्रिप्ट जनरेट करें

सौजन्य अली इस्सा यहाँ आपको क्या करना है:

  1. डेटाबेस (तालिका नहीं) पर राइट क्लिक करें और कार्य चुनें -> स्क्रिप्ट उत्पन्न करें
  2. अगला -> अनुरोधित तालिका / तालिकाओं का चयन करें (चुनिंदा विशिष्ट डेटाबेस ऑब्जेक्ट्स से)
  3. अगला -> स्क्रिप्ट = स्कीमा और डेटा के लिए उन्नत प्रकार -> डेटा पर क्लिक करें

यदि आप एक स्क्रिप्ट बनाना चाहते हैं जो सिर्फ तालिकाओं (कोई डेटा नहीं) उत्पन्न करता है तो आप निर्देशों के उन्नत भाग को छोड़ सकते हैं!


7

यकीन नहीं है कि एसएसएमएस खाता निष्पादन आदेश में क्यों नहीं लेता है, लेकिन यह अभी नहीं है यह छोटे डेटाबेस के लिए कोई समस्या नहीं है लेकिन क्या होगा यदि आपके डेटाबेस में 200 ऑब्जेक्ट हैं? उस मामले में निष्पादन का आदेश मायने रखता है क्योंकि इन सभी के माध्यम से जाना वास्तव में आसान नहीं है।

SSMS द्वारा उत्पन्न अनियंत्रित स्क्रिप्ट के लिए आप निम्नलिखित पर जा सकते हैं

ए) निष्पादित स्क्रिप्ट (कुछ वस्तुओं को अभ्यस्त नहीं डाला जाएगा, कुछ त्रुटियां होंगी)

b) डेटाबेस से जोड़ी गई स्क्रिप्ट से सभी ऑब्जेक्ट निकालें

ग) जब तक सबकुछ वापस नहीं हो जाता है) जब तक कि सब कुछ अंततः निष्पादित नहीं होता है

वैकल्पिक विकल्प एपेक्सक्यूएल स्क्रिप्ट या इस धागे में पहले से वर्णित किसी भी अन्य टूल (एसएसएमएस टूलपैक, रेड गेट और अन्य) का उपयोग करना है।

ये सभी आपके लिए निर्भरता का ध्यान रखेंगे और आपको अधिक समय भी बचाएंगे।


1

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.