Nur ein Update: In aktuellen Versionen von SQL Server-Powershell-Modulen (SQL Server 2014 und höher, glaube ich. Getestet auf SSMS 17) sind die meisten dieser Optionen native Befehle und Methoden.
Beispielsweise können Sie Get-SqlDatabase und Methoden wie .Script () und .EnumScript () verwenden. Dies ist sehr nützlich und einfach, insbesondere wenn Sie einen detaillierteren Ansatz (bestimmte Tabellen und andere Objekte) wünschen.
Dadurch werden beispielsweise CREATE-Skripte für benutzerdefinierte Funktionen generiert und in einer Datei gespeichert:
$Database = Get-SqlDatabase -ServerInstance $YourSqlServer -Name $YourDatabaseName
$MyFuncs = $Database.UserDefinedFunctions | Where Schema -eq "dbo"
$MyFuncs.Script() | Out-File -FilePath ".\SqlScripts\MyFunctions.sql"
Wenn Sie Daten und Elemente wie Indizes, Schlüssel, Trigger usw. skripten möchten , müssen Sie folgende Skriptoptionen angeben:
$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"
Beachten Sie, dass die Script () -Methode keine Skriptdaten unterstützt. Verwenden Sie EnumScript () für Tabellen.
Ein einziger Tisch :
($Database.Tables | Where Name -eq "MyTableName").EnumScript($scriptOptions)
Speichern Sie alle Ihre Ansichten, eine Datei pro Ansicht, DROP- und CREATE-Skript:
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
}
Hoffe das hilft.