स्क्रिप्ट पूरा डेटाबेस SQL- सर्वर


95

क्या कोई तरीका है जो मैं डेटाबेस से सभी तालिकाओं, प्रोक्स और अन्य वस्तुओं की स्क्रिप्टिंग प्राप्त कर सकता हूं? मुझे पता है कि डेटाबेस को स्क्रिप्ट करने का एक विकल्प है, लेकिन इसने मुझे केवल कुछ शीर्ष स्तर की स्क्रिप्ट दी है, निश्चित रूप से सभी टेबल, प्रॉपर, udfs, .etc बनाने के लिए स्क्रिप्ट नहीं है।


6
उन्होंने इसे SQL Server 2008 में टैग किया है, इसलिए मुझे लगता है कि यही वह उपयोग कर रहा है।
कॉलिन मैके

1
क्या यह नहीं माना जाता है कि serverfault.com पर जाएं?
सलामन्डर २०० Sal

जवाबों:


162

प्रबंधन स्टूडियो से अपने डेटाबेस पर राइट-क्लिक करें। कार्य -> ​​लिपियों का सृजन।

इससे हो जाना चाहिए।


2
एक अन्य विकल्प SQL SMO का उपयोग करना है और इसे प्रोग्रामेटिक रूप से स्क्रिप्ट करना है (अर्थात यदि नियमित स्क्रिप्टिंग की आवश्यकता है)
RobS

क्या ऐसा करने के लिए स्क्रिप्ट सेट करने का कोई तरीका है ताकि सेटिंग्स हमेशा वही रहें जो इसे चलाता है? मैं हमारी देव टीम के लोगों को हर बार अलग-अलग सेटिंग्स के साथ इस फाइल को ओवरराइट करता हूं ...
जो फिलिप्स

@ जो, मैं उस मार्ग का नेतृत्व करूँगा जिस पर रॉबस बात कर रहा है। आपको PowerShell के साथ ऐसा करने में सक्षम होना चाहिए। अन्यथा डेटाबेस डेवलपर के साथ RedGate टूल या विज़ुअल स्टूडियो टीम सिस्टम को देखना शुरू करें।
क्रिस ब्रांड्समा

7
डिफ़ॉल्ट रूप से यह डेटा को स्क्रिप्ट नहीं करता है। तालिका / दृश्य विकल्प के तहत "स्क्रिप्ट डेटा -> ट्रू" चुनें। एक अन्य उपयोगी विकल्प "स्क्रिप्ट ड्रॉप -> ट्रू" है
स्टीफन होकिंग

1
उत्पन्न स्क्रिप्ट में कॉलम के टकराने के बारे में कोई जानकारी नहीं होगी, जब तक कि आपने मेनू में अंतिम विकल्प नहीं चुना है अतिरिक्त> विकल्प> स्क्रिप्ट पीढ़ी। जर्मन में, विकल्प "Sortierung einschlie "en" है। यहां तक ​​कि इनमें से अधिकांश विकल्प स्क्रिप्ट बनाने वाले विज़ार्ड में शामिल हैं, यह एक (SQL Server 2008) नहीं है। आपको वास्तव में विज़ार्ड को कॉल करने से पहले विकल्प का चयन करना होगा।
ओलिवियर फौचेक्स

14

मैंने स्कीमाज़ेन नामक एक ओपन सोर्स कमांड लाइन उपयोगिता लिखी है जो ऐसा करती है। यह प्रबंधन स्टूडियो से स्क्रिप्टिंग की तुलना में बहुत तेज़ है और यह आउटपुट अधिक संस्करण नियंत्रण के अनुकूल है। यह स्कीमा और डेटा दोनों की स्क्रिप्टिंग का समर्थन करता है।

स्क्रिप्ट चलाने के लिए:

schemazen.exe लिपि --server localhost --database db --scriptDir c: \ somedir

फिर स्क्रिप्ट चलाने से डेटाबेस को फिर से बनाने के लिए:

schemazen.exe create --server localhost --database db --scriptDir c: \ somedir

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

इसकी एक कॉम्पैक्ट SQL DataBase फ़ाइल है।
कार्लो ए। लोपेज

1
पवित्र बकवास यह तेजी से और भयानक है।
कांस्टेंटाइनके

1
@ हब्स मुझे खुशी है कि आपने इसे उपयोगी पाया। : डी
सेठ रेनो

1
@SethReno भ्रष्ट sys अनुक्रमित पर मेरे db = SMO कुछ भी स्क्रिप्ट नहीं कर सकता है, आपकी स्क्रिप्ट कर सकता है, इसलिए मूल रूप से मुझे एक टन समय मैन्युअल रूप से बकवास करने से बचाया। BTW, SSMS की तुलना में 1000x तेज और सब कुछ प्रभावशाली रूप से तेजी से रिवर्स इंजीनियरिंग, और यह एसएमओ की तुलना में अपने आप से तेज लगता है (स्टार्टअप समय के कारण कम से कम नहीं)।
कांस्टेंटाइनके

4

मैंने इस कार्य के लिए एक उपयोगिता लिखी, एसएमओस्क्रिप्ट

स्क्रिप्ट पीढ़ी SMO लाइब्रेरी द्वारा किया जाता है, और SQL 2005 और 2008 में नए ऑब्जेक्ट प्रकारों का समर्थन करता है।


हम्म मैंने अपने विस्टा ऐप को अपने विस्टा 64-बिट पर स्थापित किया। सफल स्थापित करें, लेकिन मुझे अपने प्रोग्राम डायरेक्टरी या ऑल प्रोग्राम्स लिस्ट में कोई आइटम नहीं दिख रहा है
पॉजिटिव

3

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

क्यों?

  • हमें SQL Server 2000, 2005 और 2008 में इंस्टॉलेशन का समर्थन करने की आवश्यकता है, और संस्करणों के बीच डेटा प्रकारों में परिवर्तन हैं, जैसे 2005+ में nvarchar (अधिकतम) है, जबकि 2000 केवल ntext का समर्थन करता है। तो हमारी स्क्रिप्ट एक टोकन का उपयोग करती है और सही प्रकार के साथ db च्वाइस की जगह पर आधारित होती है।
  • निष्पादन के बाद कुछ स्क्रिप्टों के निष्पादन के लिए प्रतीक्षा अवधि की आवश्यकता होती है, उदाहरण के लिए, हमने पाया कि यदि आपने स्क्रिप्ट के माध्यम से एक नया डेटाबेस बनाने के बाद कुछ सेकंड इंतजार नहीं किया, तो SQL सर्वर कभी-कभी विफल हो सकता है (क्योंकि इसमें db बनाने का समय नहीं है फ़ाइलें) जब यह टेबल बनाने के लिए चला गया, आदि।
  • हम इस बात का इतिहास बनाए रखना चाहते थे कि कौन सी लिपियों का निष्पादन किया गया और कब।
  • हम कनेक्शन स्ट्रिंग और क्रेडेंशियल्स को निर्दिष्ट करने के लिए अपने Wix MSI इंस्टॉलर को अनुमति देना चाहते थे, और इसे स्क्रिप्ट में पारित करने के लिए किसी तरह की आवश्यकता थी, इसलिए टोकन और कुछ सशर्त तर्क का उपयोग करते हुए।

उदाहरण लिपि (संक्षिप्तता के लिए संपादित)

-- Sleep: 5 
-- Sleep after creating database to allow file system to create db files
CREATE DATABASE [$Database$]
GO

EXEC sp_dbcmptlevel [$Database$], $CompatabilityLevel$
GO

USE [$Database$]
GO

IF '1'!='$IntegratedSecurity$'
BEGIN
    CREATE LOGIN [$Login$] WITH PASSWORD=N'$Password$', DEFAULT_DATABASE=[$Database$]
    CREATE USER [$User$] FOR LOGIN [$Login$]
    EXEC sp_addrolemember N'db_owner', N'$User$'
END
GO

1

मैं RedGate SQL packager को देखने की सलाह देता हूं। यह मुफ़्त नहीं है, लेकिन कीमत के लायक होने के लिए पर्याप्त उपयोगी है।


1

बस तालिका डेटा को देख कर, प्रबंधन स्टूडियो 2012 और 2014 में सभी तालिका डेटा सामग्री को आउटपुट करने के लिए, यह थोड़ा छिपा हुआ है लेकिन मुझे कुछ देखने के बाद विकल्प मिला:

  1. Db पर राइट क्लिक करें
  2. 'कार्य'> 'लिपियों का सृजन करें ...' चुनें
  3. 'सेट स्क्रिप्टिंग विकल्प' पर, 'उन्नत' पर क्लिक करें
  4. 'सामान्य' के तहत, 'स्क्रिप्ट के डेटा के प्रकार' को सही पर सेट करें (यह 'सामान्य' समूह के निचले भाग पर है)

0

यदि आपको इसे प्रोग्रामेटिक रूप से करने की आवश्यकता है, तो आप SQL Server 2000 के विरुद्ध SQL DMO लाइब्रेरी (OLE) का उपयोग कर सकते हैं, लेकिन अधिक संभावना है कि आप SQL सर्वर 2005 और उसके बाद SQL SMO लाइब्रेरी (नेटिव .NET लाइब्रेरी) का उपयोग करना चाह सकते हैं।

इन दोनों पुस्तकालयों SQL सर्वर प्रशासनिक उपकरण स्थापित करने के लिए अभिन्न अंग हैं।

यह उस स्थिति में है जब SQL सर्वर प्रबंधन स्टूडियो से पूर्ण डेटाबेस स्क्रिप्ट उत्पन्न करना अपर्याप्त है।

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