Pertanyaan ini sudah lama ada di sini dan Anda mungkin sudah menemukan jawabannya sekarang, tetapi bagi mereka yang mencari cara sederhana untuk melakukannya, versi modul SQL server Powershell saat ini memiliki perintah dan metode asli yang mendukung fungsi ini dari SMO.
Anda dapat menggunakan Get-SqlDatabase dan metode seperti .Script() dan .EnumScript().
Misalnya, ini akan menghasilkan skrip CREATE untuk fungsi yang ditentukan pengguna dan menyimpannya ke file:
$Database = Get-SqlDatabase -ServerInstance $YourSqlServer -Name $YourDatabaseName
$MyFuncs = $Database.UserDefinedFunctions | Where Schema -eq "dbo"
$MyFuncs.Script() | Out-File -FilePath ".\SqlScripts\MyFunctions.sql"
Jika Anda ingin data skrip dan elemen seperti indeks, kunci, pemicu, dll. Anda harus menentukan opsi skrip, seperti ini:
$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"
Perhatikan bahwa metode Script() tidak mendukung data skrip. Gunakan EnumScript() untuk tabel.
Jika Anda hanya ingin data skrip, seperti yang diminta, Anda dapat mencoba $scriptOptions.ScriptData = $True
dan $scriptOptions.ScriptSchema = $False
.