Usando uma mistura de vários scripts PoSH consegui obter um script funcional que gera, copia e executa remotamente um script para criar a estrutura básica de um determinado banco de dados com todos os seus objetos , logins , etc. valores indicados no ambiente de produção (digamos 1 GB e 512 MB). O objetivo é criar o banco de dados em um ambiente de desenvolvimento para os desenvolvedores brincarem com ele. Portanto, um tamanho padrão inicial e um crescimento de arquivo serão mais que suficientes. Para SQL2016, esses valores são 8 MB e 64 MB, respectivamente, conforme declarado aqui pelo MSSQL Tiger Team .
Existe uma maneira de gerar o script com esses valores em vez dos configurados para o banco de dados? Ou devo pesquisar e substituir os valores no script?
Um método para modificar scripts SQL é com o
Microsoft.SqlServer.TransactSql.ScriptDom
. Abaixo está um exemplo de script do PowerShell que altera os tamanhos de arquivo usando um TSqlFragmentVisitor implementado em C# que você pode estender para suas necessidades. Essa mesma técnica pode ser usada para alterar nomes de banco de dados, caminhos de arquivo, tamanho, etc.Observe que, se você estiver usando o PowerShell ISE para desenvolvimento de script, precisará fechar e reabrir o PowerShell ISE depois de fazer alterações no código C# para recarregar o domínio do aplicativo .NET.
Saída de exemplo:
Se o seu ambiente de produção estiver com o crescimento automático ATIVADO, o tamanho atual poderá mudar ao longo do tempo, o que pode causar problemas de pesquisa/substituição, pois você não saberia o que pesquisar. Você pode tentar criar um banco de dados fictício com os atributos desejados e selecionar esses atributos por meio da junção de metadados durante a geração do script. Ou você pode simplesmente codificar os valores durante a geração do script.