Solo un aggiornamento: nelle versioni attuali dei moduli PowerShell di SQL Server (SQL Server 2014 e successivi, ho creduto. Testato su SSMS 17), la maggior parte di queste opzioni sono comandi e metodi nativi.
Ad esempio, è possibile utilizzare Get-SqlDatabase e metodi come .Script () e .EnumScript (). È davvero utile e semplice, soprattutto se si desidera un approccio più granulare (tabelle specifiche e altri oggetti).
Ad esempio, questo genererà script CREATE per le funzioni definite dall'utente e lo salverà su file:
$Database = Get-SqlDatabase -ServerInstance $YourSqlServer -Name $YourDatabaseName
$MyFuncs = $Database.UserDefinedFunctions | Where Schema -eq "dbo"
$MyFuncs.Script() | Out-File -FilePath ".\SqlScripts\MyFunctions.sql"
Se si desidera creare script di dati ed elementi come indici, chiavi, trigger, ecc., È necessario specificare le opzioni di scripting, in questo modo:
$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"
Si noti che il metodo Script () non supporta i dati di scripting. Utilizzare EnumScript () per le tabelle.
Un unico tavolo :
($Database.Tables | Where Name -eq "MyTableName").EnumScript($scriptOptions)
Tutte le tue visualizzazioni, salva un file per ogni visualizzazione, DROP e CREATE script:
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
}
Spero che sia di aiuto.