SSMS
 sql >> Base de Dados >  >> Database Tools >> SSMS

Powershell:Gerador de scripts do SQL Server Management Studio


Esta pergunta está aqui há algum tempo e você provavelmente já encontrou sua resposta, mas para quem procura uma maneira simples de fazer isso, as versões atuais dos módulos Powershell do SQL Server possuem comandos e métodos nativos que suportam essa funcionalidade do SMO.

Você pode usar Get-SqlDatabase e métodos como .Script() e .EnumScript().

Por exemplo, isso irá gerar scripts CREATE para funções definidas pelo usuário e salvá-lo no arquivo:
$Database = Get-SqlDatabase -ServerInstance $YourSqlServer -Name $YourDatabaseName

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

Se você quiser script de dados e elementos como índices, chaves, gatilhos, etc. você terá que especificar as opções de script, assim:
$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"

Observe que o método Script() não suporta dados de script. Use EnumScript() para tabelas.

Se você deseja criar scripts apenas de dados, conforme solicitado, tente $scriptOptions.ScriptData = $True e $scriptOptions.ScriptSchema = $False .