SQL सर्वर 2012: कमांड लाइन से स्क्रिप्ट जनरेट करें


19

मैं SQL Server 2012 चला रहा हूं।

SQL सर्वर प्रबंधन स्टूडियो में किसी डेटाबेस पर राइट क्लिक करने का विकल्प होता है, फिर कार्य और जनरेट लिपियों का चयन करें।

वहाँ किसी भी तरह से कमांड लाइन के माध्यम से स्वचालित करने का एक तरीका है?

मैं एक स्क्रिप्ट बनाना चाहता हूं जिसमें संपूर्ण डेटा बेस का स्कीमा और डेटा शामिल हो।

जैसे उपकरण ScriptDBऔर sqlpubwiz.exeसभी SQL Server 2005 को लक्षित करने लगते हैं। SQL सर्वर 2012 के बारे में क्या?

जवाबों:


20

Powershell का उपयोग करना सबसे अच्छा है - यदि आप इसे अक्सर उपयोग करने जा रहे हैं। आप Powershell और SMO के साथ स्वचालित स्क्रिप्ट-पीढ़ी का उल्लेख कर सकते हैं ।

साथ ही, Powershell के साथ काम करते समय SQL Server PowerShell एक्सटेंशन्स (SQLPSX) बहुत अच्छे हैं। सभी मॉड्यूल में मदद फाइलें हैं जैसे गेट- SqlScripter

Get-SqlDatabase -dbname database1 -sqlserver server | Get-SqlTable | Get-SqlScripter | Set-Content -Path D:\scripts\script.sql
Get-SqlDatabase -dbname database1 -sqlserver server | Get-SqlStoredProcedure | Get-SqlScripter
Get-SqlDatabase -dbname database1 -sqlserver server | Get-SqlView | Get-SqlScripter

थर्ड पार्टी टूल्स के लिए, अत्यधिक जाँच करने की सलाह देते हैं (वहाँ कई थर्ड पार्टी टूल्स हैं, लेकिन नीचे जो मैंने इस्तेमाल किया है और वे बहुत अच्छे हैं):


10

Microsoft से तारा राज ने हाल ही में घोषणा की कि Microsoft SQL टीम ने T-SQL स्क्रिप्ट उत्पन्न करने के लिए कमांड लाइन टूल का एक सेट जारी किया है, जो आपके द्वारा पूछा गया है।

mssql-scripter

एसएससीएमएस में व्यापक रूप से इस्तेमाल किए गए जनरेट स्क्रिप्स विजार्ड अनुभव के बराबर मल्टीप्लायर कमांड लाइन है।

आप SQL सर्वर में कहीं भी चल रहे डेटाबेस ऑब्जेक्ट्स के लिए डेटा परिभाषा भाषा (डीडीएल) और डेटा हेरफेर भाषा (डीएमएल) टी-एसक्यूएल स्क्रिप्ट बनाने के लिए लिनक्स, मैकओएस, और विंडोज पर एमएससीएल-ट्राइटर का उपयोग कर सकते हैं, एज़्योर एसक्यूएल डेटाबेस, और एज़ल एसक्यूएल डेटा वेयरहाउस । आप उत्पन्न T-SQL स्क्रिप्ट को .sql फ़ाइल में सहेज सकते हैं या आगे के परिवर्तनों के लिए इसे मानक * nix उपयोगिताओं (उदाहरण के लिए, sed, awk, grep) पर पाइप कर सकते हैं। आप उत्पन्न स्क्रिप्ट को संपादित कर सकते हैं या इसे स्रोत नियंत्रण में जांच सकते हैं और बाद में अपने मौजूदा SQL डेटाबेस परिनियोजन प्रक्रियाओं में स्क्रिप्ट निष्पादित कर सकते हैं और मानक मल्टीप्लायर SQL कमांड लाइन उपकरण जैसे sqlcmd के साथ DevOps पाइपलाइन।

Mssql-trickter को Python का उपयोग करके बनाया गया है और नए Azure CLI 2.0 टूल के प्रयोज्य सिद्धांतों को शामिल करता है। स्रोत कोड Github पर https://github.com/Microsoft/sql-xplat-cli पर पाया जा सकता है , और हम आपके योगदानों का स्वागत करते हैं और अनुरोधों को खींचते हैं!

उपयोग के कुछ उदाहरण:

एडल्टवर्क्स डेटाबेस में सभी डेटाबेस ऑब्जेक्ट्स (डिफ़ॉल्ट) के लिए डीडीएल स्क्रिप्ट उत्पन्न करें और स्टडआउट के लिए आउटपुट

$ mssql-scripter -S localhost -d AdventureWorks -U sa

एडवेंचरवर्क्स डेटाबेस के सभी टेबलों के लिए सभी डेटाबेस ऑब्जेक्ट्स और DML स्क्रिप्ट्स (INSERT स्टेटमेंट्स) के लिए DDL स्क्रिप्ट्स बनाएँ और स्क्रिप्ट को फाइल में सेव करें।

$ mssql-scripter -S localhost -d AdventureWorks -U sa schema-and-data  > ./output.sql

9

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

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

schemazen.exe स्क्रिप्ट - ओवरस्वर लोकलहोस्ट --database db --scriptDir c: \ somedir

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

schemazen.exe बनाएँ --server localhost --database db --scriptDir c: \ somedir

0

आप xSQL स्कीमा तुलना और xSQL डेटा तुलना के कमांड लाइन संस्करणों का उपयोग कर सकते हैं । कमांड लाइन संस्करणों के साथ आप एक खाली डेटाबेस के खिलाफ समय-समय पर डेटा और स्कीमा तुलना को शेड्यूल कर सकते हैं और यह हमेशा स्क्रैच से आपके डेटाबेस के नवीनतम संस्करण की सटीक प्रतिकृति बनाने के लिए स्क्रिप्ट है।

प्रकटीकरण: मैं xSQL से संबद्ध हूं।


0

बस एक अद्यतन: SQL सर्वर के मौजूदा संस्करणों में SQL Serverhellhell (SQL Server 2014 और चालू, मुझे विश्वास था। SSMS 17 पर परीक्षण किया गया), इनमें से अधिकांश विकल्प मूल कमांड और तरीके हैं।

उदाहरण के लिए, आप Get-SqlDatabase और Methods जैसे .Script () और .EnumScript () का उपयोग कर सकते हैं यह वास्तव में उपयोगी और सरल है, खासकर यदि आप अधिक दानेदार दृष्टिकोण (विशिष्ट तालिकाओं और अन्य वस्तुओं) चाहते हैं।

उदाहरण के लिए, यह उपयोगकर्ता परिभाषित कार्यों के लिए क्रिएट स्क्रिप्ट उत्पन्न करेगा और इसे फ़ाइल में सहेजेगा:

$Database = Get-SqlDatabase -ServerInstance $YourSqlServer -Name $YourDatabaseName

$MyFuncs = $Database.UserDefinedFunctions | Where Schema -eq "dbo"
$MyFuncs.Script() | Out-File -FilePath ".\SqlScripts\MyFunctions.sql"

यदि आप डेटा और तत्वों जैसे अनुक्रमित, कुंजी, ट्रिगर आदि को स्क्रिप्ट करना चाहते हैं, तो आपको स्क्रिप्टिंग विकल्प निर्दिष्ट करना होगा, जैसे:

$scriptOptions = New-Object -TypeName Microsoft.SqlServer.Management.Smo.ScriptingOptions

$scriptOptions.NoCollation = $True
$scriptOptions.Indexes = $True
$scriptOptions.Triggers = $True
$scriptOptions.DriAll = $True
$scriptOptions.ScriptData = $True

$Database.Tables.EnumScript($scriptOptions) | Out-File -FilePath ".\AllMyTables.sql"

ध्यान दें कि स्क्रिप्ट () विधि स्क्रिप्टिंग डेटा का समर्थन नहीं करती है। तालिकाओं के लिए EnumScript () का उपयोग करें।

एक एकल तालिका :

($Database.Tables | Where Name -eq "MyTableName").EnumScript($scriptOptions)

आपके सभी विचार, प्रत्येक दृश्य, DROP और CREATE स्क्रिप्ट के अनुसार एक फ़ाइल सहेजें :

ForEach ($view in $($Database.Views | Where Schema -eq "dbo")) {

    "`nIF OBJECT_ID('$($view.Name)') IS NOT NULL DROP VIEW $($view.Name);`n`n" | Out-File -FilePath ".\SqlScripts\$($view.Name).sql"    
    $view.Script() | Out-File -FilePath ".\SqlScripts\$($view.Name).sql" -Append
}

उम्मीद है की यह मदद करेगा।

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