Fala, pessoal!
Quanto tempo sem novos artigos. Mas estou voltando com uma nova série para movimentar o portal.
Criarei uma série de artigos para falar sobre Dbatools. Tenho utilizado há algum tempo e gostei da experiência e dos resultados. Irei compartilhar com vocês algumas das experiências e casos onde foi muito útil no meu dia a dia.
Para começar, o que é o Dbatools?
O Dbatools é um módulo open source de PowerShell desenvolvido pela comunidade. Grandes profissionais conhecidos na comunidade SQL Server, MVPs, entre outros especialistas em SQL Server e PowerShell espalhados pelo mundo, com foco na plataforma de dados SQL Server.
Dbatools faz um grande uso das bibliotecas SMO (Server Managment Objetcs) do framework .NET – as mesmas bibliotecas utilizadas pelo SSMS (SQL Server Managment Studio) para interação com o SQL Server.
Com o uso das bibliotecas SMO, conseguimos manipular qualquer objeto do SQL Server de forma programática utilizando C#. Isso abre um mundo de possibilidades.
Quer conhecer um pouco mais sobre SMO? Veja no link abaixo:
Além da grande utilização do SMO, o dbatools faz grande uso das bibliotecas WMI/CIM (Windows Managment Instrumentation/Common Information Model) para manipular objetos do servidor Windows.
Com todo esse poder, o Dbatools tem como foco auxiliar na administração de ambientes SQL Server, implementação de boas práticas, desenvolvimento, automatização no processo de migração e rotinas cotidianas. Apresentarei alguns comandos ao decorrer da série.
Sem mais delongas, vamos para nossa maravilhosa tela azul do PowerShell!
O Dbatools está atualmente com mais de 400 comandos para auxiliar no seu dia a dia.
Get-Command -Module dbatools -Type Function | Measure-Object
Para ter o Dbatools alguns requerimentos mínimos precisam ser atendidos pra você conseguir instalar e utilizar o Dbatools.
Todas as informações você encontrará com detalhes no link abaixo:
Requerimentos mínimos para Servidor:
- SQL Server 2000
- Powershell 2.0
Requerimentos mínimos para desktop:
- Windows 7 com PowerShell versão 3
Uma vez que atenda a esses requerimentos, a instalação é mais simples do que se imagina. Se estiver utilizando Windows 10, pode baixar todos os pacotes da powershellgalery:
Install-Module dbatools
Se estiver utilizando uma versão anterior como Windows 7/8, Server 2012, você pode baixar o pacote de gerenciamento do PowerShell atualizado da galeria e utilizar o comando Install-Module:
Ou, como alternativa, você pode utilizar o comando abaixo:
Invoke-Expression (Invoke-WebRequest -UseBasicParsing https://dbatools.io/in)
Você pode utilizar o método offline caso seu servidor não tenha acesso à internet. Faça o download dos pacotes localizados em: dbatools.io/zip e copie preferencialmente para algum caminho que esteja configurado em sua variável de ambiente $env:PSModulePath.
Após copiado o pacote para algum dos locais acima, você poderá instalar o Dbatools normalmente utilizando o comando:
Import-Module -Name Dbatools
Ou, você pode copiar o pacote para um local desejado, como C:\Dbatools\ e utilizar o comando abaixo:
Import-Module -Name C:\dbatools-master\dbatools-master\dbatools.psm1
Pronto!
Como saber se está instalado de fato?
Get-Module dbatools -ListAvailable
A maneira ideal é utilizando o comando Get-Module apresentado acima, uma vez que nada foi retornado, isso pode significar que o módulo não está instalado na sua máquina ou ele ainda não foi carregado para a memória.
Veremos uma navegação básica pelo PowerShell utilizando os cmdlets nativos. Abaixo alguns comandos que utilizaremos bastante e ajudarão muito no dia a dia.
Get-Command ##Lista todos os comandos dos pacotes instalados na maquina
Get-Help ##Obter detalhes de um comando
Get-command -Module dbatools ##Lista todos os comandos do modulo Dbatools
Depois de verificar se o módulo está instalado na sua máquina, você poderá utilizar o comando Get-Command para listar todos os comandos disponíveis no módulo.
Get-command *Get-DbaSQL* ##Buscando comandos específicos que contenham no seu nome o texto Get-DbaSQL, o operador * funciona como um coringa.
Get-Help Get-DbaSqlService ##Capturando informações sobre o comando desejado
Porém, o Get-Help vai além, com muito mais informações. Ao digitar o comando acima você pode utilizar o atalho CTRL + Space – ele mostrará os parâmetros aceitos por esse comando.
Mais utilizados:
Get-Help Get-DbaSqlService -Detailed
Get-Help Get-DbaSqlService -Examples
Get-Help Get-DbaSqlService -ShowWindow
Uma vez que você consiga navegar com esses comandos básicos, encontrar comandos que deseja utilizar, explorar as utilizações e informações daquele comando, você já deu um grande passo, mas o PowerShell é muito mais rico e precisamos explorar mais funcionalidades, pois o Dbatools é baseado em Powershell
Quanto melhor seu conhecimento em PowerShell, sua facilidade de trabalhar com o dbatools será maior e conseguirá extrair informações ricas com mais facilidade.
Como eu disse anteriormente, o Dbatools é um módulo open source, então seu código é aberto para que você possa visualizar e alterar. Porém, as alterações você pode realizar apenas na sua máquina. Caso queira sugerir uma melhoria ou correção, você pode abrir uma Issue no GitHub ou entrar em contato com os voluntários através dos canais disponibilizados no site. Abaixo, o link do repositório onde você vai encontrar o código fonte de todos os comandos do modulo dbatools:
Bom, pessoal, esse foi o primeiro artigo da série Dbatools. Explorem essa incrível plataforma de comandos para o SQL Server. Nos próximos artigos quero falar um pouco sobre a utilização do pipeline do PowerShell que é um recurso importantíssimo para podermos utilizar essa plataforma da melhor maneira.
Para não ficar só na introdução, deixarei um pouquinho de Dbatools para vocês.
Get-DbaSqlService -Type Engine | Restart-Service -PassThru -Force | Select-Object DisplayName,Status |Format-List >> “c:\Temp\services.txt”
Listando todos os serviços do SQL Server, apenas do tipo ‘Engine’, reiniciando os serviços do SQL Server, selecionando dois campos do output e colocando em um arquivo de Log no formato txt. Tudo isso com apenas um comando.
É possível executar este comando em vários servidores? Sim! Veremos em breve.
A mensagem que eu quero passar no final de todos os artigos é a facilidade que o Dbatools traz para o seu dia a dia que trabalha com SQL Server, migrações, implementações de boas práticas, automatizações, entre outras tarefas administrativas ou de desenvolvimento.
O PowerShell é uma linguagem de alto nível, e integrado com outras bibliotecas pode proporcionar uma grande facilidade em tarefas complexas, automação de processos rotineiros e manuais, e grandes resultados com poucas linhas de código.
Me acompanhe nessa imersão ao Dbatools e até a próxima!