बस एक अद्यतन: 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
}
उम्मीद है की यह मदद करेगा।