sql >> Base de Datos >  >> Database Tools >> SSMS

Powershell:Generador de secuencias de comandos de SQL Server Management Studio

Esta pregunta ha estado aquí por un tiempo y probablemente ya haya encontrado su respuesta, pero para aquellos que buscan una manera simple de hacerlo, las versiones actuales de los módulos Powershell del servidor SQL tienen comandos y métodos nativos que admiten esta funcionalidad de SMO.

Puede usar Get-SqlDatabase y métodos como .Script() y .EnumScript().

Por ejemplo, esto generará scripts CREATE para funciones definidas por el usuario y lo guardará en el archivo:

$Database = Get-SqlDatabase -ServerInstance $YourSqlServer -Name $YourDatabaseName

$MyFuncs = $Database.UserDefinedFunctions | Where Schema -eq "dbo"
$MyFuncs.Script() | Out-File -FilePath ".\SqlScripts\MyFunctions.sql"

Si desea guion de datos y elementos como índices, claves, disparadores, etc. deberá especificar las opciones de secuencias de comandos, así:

$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"

Tenga en cuenta que el método Script() no admite datos de secuencias de comandos. Use EnumScript() para tablas.

Si solo desea codificar datos, como se le solicita, puede probar $scriptOptions.ScriptData = $True y $scriptOptions.ScriptSchema = $False .