यह प्रश्न यहां कुछ समय के लिए रहा है और आपको शायद अब तक अपना उत्तर मिल गया है, लेकिन ऐसा करने का एक आसान तरीका ढूंढने वालों के लिए, SQL सर्वर Powershell मॉड्यूल के वर्तमान संस्करणों में मूल कमांड और विधियां हैं जो SMO की इस कार्यक्षमता का समर्थन करती हैं।पी>
आप Get-SqlDatabase का उपयोग कर सकते हैं और तरीके जैसे .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() का उपयोग करें।
यदि आप केवल पूछे गए डेटा को स्क्रिप्ट करना चाहते हैं, तो आप $scriptOptions.ScriptData = $True
आज़मा सकते हैं और $scriptOptions.ScriptSchema = $False
।