SSMS
 sql >> Database >  >> Database Tools >> SSMS

Powershell:generatore di script di SQL Server Management Studio

Questa domanda è qui da un po' e probabilmente hai già trovato la tua risposta, ma per coloro che cercano un modo semplice per farlo, le versioni attuali dei moduli Powershell del server SQL hanno comandi e metodi nativi che supportano questa funzionalità da SMO.

Puoi utilizzare Get-SqlDatabase e metodi come .Script() e .EnumScript().

Ad esempio, questo genererà gli 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 desideri scrivere i dati ed elementi come indici, chiavi, trigger, ecc. dovrai 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. Usa EnumScript() per le tabelle.

Se vuoi eseguire lo script solo dei dati, come richiesto, puoi provare $scriptOptions.ScriptData = $True e $scriptOptions.ScriptSchema = $False .