Over 10 years we help companies reach their financial and branding goals. Engitech is a values-driven technology agency dedicated.

Gallery

Contacts

411 University St, Seattle, USA

engitech@oceanthemes.net

+1 -800-456-478-23

Dbachecks

SQL Server e PowerShell – E sobre o DBAchecks já ouviu falar?

O dbachecks é um módulo PowerShell de código aberto (open source) no qual foi criado por profissionais da comunidade SQL Server com o principal intuito de validar seus ambientes de banco de dados SQL Server e possui mais de 100 checks a serem realizados e exibido o resultado em um dashboard do PowerBi.

Exemplos de verificações:

  • Quanto tempo está sem Backup.
  • Se o database está com o Auto Close habilitado.
  • Se o databas está com o Auto Shrink habilitado.

O dashboard gerado ajuda o DBA na verificação das configurações de seu ambiente no dia a dia.

Para acessar a documentação basta acessar o site dbachecks no qual possui a documentação completa.

Para este post utilizei um host “Ponte” no qual apenas o dbatools e dbachecks instalado, ou seja, é apenas uma estação de trabalho sem qualquer banco de dados. Este host possui acesso acesso até os servidores de banco de dados utilizados no exemplo do post.

Para a instalação do dbachecks basta executar o comando abaixo no PowerShell como administrador e aceitar a interação solicitada, neste print abaixo podemos visualizar que a opção escolhida foi [ A ] Yes To All.

Install-Module -Name DBAChecks

Vamos visualizar todos os DBAChecks suportados usando o comando abaixo:

Get-DbcCheck

Segue o resultado do comando, clique na imagem para melhor visualização.

Com o comando “Get-DbcConfig” é possível visualizar a lista de opções de configurações , ou seja, os parâmetros de cada check.
São estes os parâmetros que serão responsáveis por exibir o alarme no dashboad.

Get-DbcConfig  | Format-Table –AutoSize

Vamos alterar os parâmetros de backup full, diferencial e log?

Set-DbcConfig -Name policy.backup.fullmaxdays   -Value 1         #Tempo em Dias
Set-DbcConfig -Name policy.backup.diffmaxhours  -Value 25        #Tempo em Horas
Set-DbcConfig -Name policy.backup.logmaxminutes -Value 15        #Tempo em Minutos

O comando “Get-DBCConfig” lista os parâmetros de configuração, segue abaixo o print no qual temos os parâmetros de backup full, diff e log.

Abaixo temo um exemplo de um código PowerShell para efetuar o check em 3 host sendo eles SQLNODE1 e SQLNODE2 são ambiente produção e o host DEVSAP ambiente de qa. Observação o tempo de coleta irá de acordo com a quantidade de checks a serem executados e a quantidade de host/instâncias.

Vamos efetuar apenas 3 tipos de checks sendo eles:

  • LastBackup – é responsável pelo o check de backup full, diff e log. De acordo com o tempo setado no parâmetro conforme efetuado acima.
  • AutoClose – é responsável pelo check de verificar se o database está configurado como true, de acordo com as boas práticas este parâmetro deve está como false.
  • AutoShrink – é responsável pelo check de verificar se o database está configurado como true, de acordo com as boas práticas este parâmetro deve está como false.

Referente as variáveis :

  • $Checks quais os checks que serão executados.
  • $PROD quais são os host de produção.
  • $QA quais são os host de qa.
  • -Environment é responsável por criar um filtro no dashboard, neste exemplo separamos os ambientes em Prod e Qa.
  • Start-DbcPowerBi é responsável pela a execução da abertura do PowerBi, neste caso é necessário que o aplicativo esteja instalado no host que você selecionou para executar o script.

Referente ao script de checks abaixo ele é apenas um exemplo, o script vai de acordo com a necessidade de cada um.

# Variável de quais checks serão verificados. 
$Checks= 'LastBackup','AutoClose','AutoShrink'

# Variável $PROD é responsável por receber os host de produção
$PROD = 'SQLNODE1','SQLNODE2'
Invoke-DbcCheck -Check $Checks -SqlInstance $PROD  -Show Summary -PassThru | Update-DbcPowerBiDataSource -Environment  PROD 

# Variável $QA é responsável por receber os host de teste 
$QA = 'DEVSAP'
Invoke-DbcCheck -Check $Checks -SqlInstance $QA -Show Summary -PassThru | Update-DbcPowerBiDataSource -Environment  QA   

# Comando para abrir o powerbi
Start-DbcPowerBi

Então após executar o script acima, podemos visualizar o dashboard como o exemplo do print abaixo.
Será que o dashboard abrir, você deve clicar no botão de “Atualizar” para carregar os dados coletados do seu ambiente.

Podemos utilizar como filtro as opções “Environment” ou “Instances”.

Na coluna “Failed” podemos verificar a quantidade de erros listados.

Conforme o print abaixo, quando selecionado o auto close podemos visualizar qual é a mensagem de erro no qual é evidenciado qual é o database que está com o parâmetro configurado errado, neste caso o parâmetro está true e deveria está como false.

Quando efetuado a manutenção no ambiente corrigindo os erros apresentados no dashboard e ao executar o script de checks novamente não serão listados os erros anteriores.

Após abertura do dashboard clique no botão “Atualizar” para carregar os dados da coleta do ambiente.
O DBA efetuou todas as correções e o painel ficou 100% sem falhas.

Este post tem como objetivo apresentar a ferramenta dbachecks, de como é possível visualizar algumas informações do ambiente de banco de dados SQL Server utilizando este módulo.
Lembrando que sempre que for efetuar algum estudo ou teste, faça em algum ambiente de teste. Nunca faça uso direto em produção.

Vale lembrar que é possível automatizar a execução do script de check sendo via agendador de tarefas do windows ou até mesmo um job sendo executado pelo o SQL Server.

Este post é superficial apenas para demonstrar de fato como instala e como executa uma coleta básica.

É necessário a instalação do dbatools, para visualizar o post referente ao dbatools basta acessar o post “SQL Server e PowerShell – Já ouviu falar sobre dbatools?”

Espero que gostem do conteúdo apresentado!

Bora tomar aquele cafezinho com o pão de queijo?!

Abraços!

Author

Wesley Cardoso