Hanya pembaruan: dalam versi saat ini modul powershell SQL Server (SQL Server 2014 dan seterusnya, saya percaya. Diuji pada SSMS 17), sebagian besar opsi ini adalah perintah dan metode asli.
Misalnya, Anda dapat menggunakan Get-SqlDatabase dan metode seperti .Script () dan .EnumScript (). Ini sangat berguna dan sederhana, terutama jika Anda menginginkan pendekatan yang lebih terperinci (tabel spesifik dan objek lainnya).
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 skrip data 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.
Meja tunggal :
($Database.Tables | Where Name -eq "MyTableName").EnumScript($scriptOptions)
Semua tampilan Anda, simpan satu file per setiap tampilan, DROP dan BUAT skrip:
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
}
Semoga ini membantu.