Em alguns processos de release, às vezes temos a necessidade de interagir com nosso servidor SQL Server para executar algumas consultas e até mesmo para a aplicação de alguns scripts SQL.
Uma maneira eficaz de se fazer isso é usando nosso “querido” Powershell. Ele sem dúvida é nosso salvador da pátria em muitos momentos… e neste caso não é diferente.
Agora a próxima pergunta a se responder é como fazer todo o processo via script? Pois bem … primeiro precisamos conhecer o Microsoft Command Line Utilities for SQL Server. Para quem ainda não conhece a Microsoft desenvolveu um utilitário que permite os usuários se conectarem e enviarem lotes de comandos T-SQL para execução tudo isso via command line. E é justamente com ele que vamos executar nossos processos via Powershell.
Com a ferramenta em mão temos que criar um script básico em Powershell que interaja com ela. Então mãos na massa:
Import-Module SQLPS
Primeiro precisamos importar o módulo SQLPS, este módulo carrega e registra snap-ins do SQL Server e assemblies de gerenciamento do mesmo. Este módulo nos habilita para:
- Executar cmdlets do SQL Server;
- Navegar na hierarquia de objetos do SQL Server;
- Usar os modelos de objeto do SQL Server (como Microsoft.SqlServer.Management.Smo);
Como o módulo importado podemos criar uma lógica simples que leia os arquivos T-SQL e execute os mesmos via sqlcmd.
$pathSQLFiles = "\\Path\Powershell\" $tsqlFiles = Get-ChildItem -Force $pathSQLFiles -Recurse foreach($tsqlfile in $tsqlFiles) { Invoke-Sqlcmd -ServerInstance "SERVIDOR\SQLEXPRESS" -Database "PowershellDemos" -InputFile $tsqlfile.FullName }
Lembrando que este script em Powershell pode ser incluído em sua ferramenta de release como o Visual Studio Team Services ou Team Foudation Server, permitindo que você execute configurações específicas em seu banco de dados SQL Server durante o release de uma aplicação, por exemplo.
Quem quiser conferir o código completo pode acessar meu GitHub: sqlcmd.ps1
Até a próxima.
[su_divider]
Não quer perder mas nenhuma informação sobre ALM e DevOps, então não esqueça de me acompanhar nas redes sociais
[su_table]
Youtube | News | ||
[su_qrcode data=”https://www.facebook.com/adrianobertucciMVP/” title=”Facebook” size=”50″ align=”center” link=”https://www.facebook.com/adrianobertucciMVP/”] | [su_qrcode data=”https://www.youtube.com/c/ALMBrasil?sub_confirmation=1″ title=”Youtube” size=”50″ align=”center” link=”https://www.youtube.com/c/ALMBrasil?sub_confirmation=1″] | [su_qrcode data=”https://www.twitter.com/adrianobertucci” title=”Twitter” size=”50″ align=”center” link=”https://www.twitter.com/adrianobertucci”] | [su_qrcode data=”http://bertucci.klickpages.com.br/buildnoturno” title=”News” size=”50″ align=”center” link=”http://bertucci.klickpages.com.br/buildnoturno”] |
[/su_table]