Tylko aktualizacja: w obecnych wersjach modułów PowerShell programu SQL Server (jak sądzę, SQL Server 2014 i nowsze wersje. Testowane na SSMS 17) większość z tych opcji to natywne polecenia i metody.
Na przykład możesz użyć Get-SqlDatabase i metod takich jak .Script () i .EnumScript (). Jest to naprawdę przydatne i proste, szczególnie jeśli chcesz bardziej szczegółowego podejścia (określonych tabel i innych obiektów).
Na przykład wygeneruje skrypty CREATE dla funkcji zdefiniowanych przez użytkownika i zapisze je w pliku:
$Database = Get-SqlDatabase -ServerInstance $YourSqlServer -Name $YourDatabaseName
$MyFuncs = $Database.UserDefinedFunctions | Where Schema -eq "dbo"
$MyFuncs.Script() | Out-File -FilePath ".\SqlScripts\MyFunctions.sql"
Jeśli chcesz skryptować dane i elementy, takie jak indeksy, klucze, wyzwalacze itp., Musisz określić opcje skryptów, takie jak:
$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"
Zauważ, że metoda Script () nie obsługuje danych skryptowych. Użyj EnumScript () dla tabel.
Pojedyncza tabela :
($Database.Tables | Where Name -eq "MyTableName").EnumScript($scriptOptions)
Wszystkie widoki, zapisz jeden plik dla każdego widoku, DROP i skrypt 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
}
Mam nadzieję że to pomoże.