SQLdiag - Parte 4 - Registrando o SQLdiag como um serviço no Windows!

 Fala galera tudo certo? Espero que sim!

 Acabou minha vida fácil, então, de volta ao SQL Server! Continuando a série sobre o SQLdiag, desta vez vou mostrar como configurar ele para rodar periodicamente no Windows.
 Imaginando que vocês já estão com seu XML e scripts customizados em mãos (se não estiverem, você podem usar os exemplos dos posts anteriores), a primeira coisa que iremos fazer é registrar o SQLdiag como um serviço no Windows.

Registrando o SQLdiag como um serviço no Windows...

1. Abram um prompt de comando elevado (Run as administrator):


2. Agora, naveguem até o diretório padrão do SQLdiag:


 Notem que está pasta contém o executável do SQLdiag + Arquivo XML de configuração + Script customizado, no meu caso usei os mesmos dos posts anteriores:


3. Agora, rodem a linha de comando abaixo:

sqldiag /R /A DiagMagu /I “c:\program files\microsoft sql server\120\tools\binn\sqldiag_custom.xml” /O “c:\output” /P %cd%

Explicando cada parâmetro:

/R – Este parâmetro será responsável por registrar o SQLdiag como um serviço no Windows.
/A – Este parâmetro server para que você nomeie o serviço do SQLdiag, se vocês não o utilizarem ele assumirá o nome default.
/I – Diz qual arquivo de configuração (XML) o SQLdiag irá usar.
/O – Especifica o diretório de saída dos resultados da coleta. No meu caso "c:\output".
/P – Especifica o diretório onde demais arquivos de configuração que o SQLdiag irá utilizar estão localizados, como script’s, xml’s etc. Como nossos arquivos estão na pasta corrente, estou utilizando o %cd%


Aguarde a confirmação de que o serviço foi criado...


4. Agora que nosso serviço foi instalado com sucesso, antes de iniciá-lo devemos tomar o cuidado para configurar ele para rodar com uma conta que tenha permissões dentro do SQL Server, do contrário, scripts customizados podem não funcionar, configure uma conta na aba "Log On" nas propriedades do serviço.


5. Agora vamos efetuar um breve teste, nos serviços do Windows deem um “start” no serviço que acabamos de criar:


6. Confiram se ele ficou em “Started”:


7. Naveguem até o diretório que configuraram como "output" e vejam se os arquivos da coleta estão sendo gerados conforme figura abaixo:


 Se os arquivos estão lá, ótimo! O serviço do SQLdiag foi configurado corretamente, agora temos que resolver outra questão, se deixarmos o SQLdiag rodar sem uma interrupção, na hora de analisar os arquivos pode não ser nada prático, primeiro pela questão das datas e horários e segundo pelo tamanho que os arquivos podem atingir de acordo com o ambiente que está sendo monitorado. Poderíamos então quebrar isto por exemplo a cada 12 horas? Claro! Como fazer? Usando o SQL Server Agent para controlar o serviço!

Controlando o START/STOP do SQLdiag utilizando o SQL Server Agent...

1. Vamos supor que queremos que nossa coleta rode em ciclos de 12 em 12 horas.

2. Abram o SQL Server Management Studio, no SQL Server Agent, cliquem com o direito em Jobs e depois cliquem em “New Job...”


3. Nomeiem este JOB como Start_SQLdiag:


4. Em “Steps”, na parte inferior clique em “New...”, chame está Step de “Start” e mudem o tipo dela para “Operating System (CmdExec)”:


 5. Agora, em “Command”, vamos deixar conforme abaixo:

SQLdiag START /A DiagMagu

Obs.: Mudem o que está em amarelo de acordo com o nome que escolheram para o serviço do SQLdiag.

6. Agora em “Schedules”, na parte inferior clique em “New...”, chamem a nova schedule de Start1_Sched, deixem o tipo dela em “Recurring”, certifiquem-se de que o “Enabled” está marcado, conforme abaixo:


7. Ainda na nova schedule, em “Frequency”, deixem o campo “Occurs” em “Daily”, e em “Daily frequency”, deixem o campo “Occurs once at” como 06:00:00 AM, conforme abaixo:


8. Feito esta schedule, criem uma outra nos mesmos moldes mudando seu nome para Start2_Sched e o horário deixem como 6:00:00 PM, conforme abaixo:


9. Salvem este nosso primeiro job.

10. Criem um segundo job, chamem ele de Stop_SQLdiag.

11. Criem uma nova step chamada Stop, deixem o tipo em “Operating System (CmdExec)” e em comando deixem conforme abaixo:

SQLdiag STOP /A DiagMagu

Obs.: Mudem o que está em amarelo de acordo com o nome que escolheram para o serviço do SQLdiag.

12. Igual ao job de start, criem duas schedules, chamem uma de Stop1_Sched e a outra de Stop2_Sched, configurem ambas da mesma forma que as schedules do job de Start, contudo nos horários para a 1 deixem em 05:55:00 AM e para a 2 deixem em 05:55:00 PM.

13. Hora de testar! Nos serviços do Windows, parem o SQLdiag.


14. Agora, via SQL Server Agent, deem um start no JOB que criamos chamado Start_SQLdiag:


 Se ele rodar com sucesso vocês verão a tela abaixo:


 Confirmem nos serviços do Windows se o SQLdiag realmente foi iniciado:


IMPORTANTE:  Caso o job falhe e no histórico vocês verem uma mensagem igual a abaixo:

Isto indica que a conta de serviço que executa o SQL Server Agent não tem permissões para controlar serviços no Windows, a partir daí existem duas saídas, ou atribuímos a conta a permissão para tal ou criamos dentro do SQL Server uma “credential” que referencie uma conta do Windows com permissões suficientes, depois um proxy deve ser criado referenciando está “credencial” e sendo colocado como “owner” das steps dentro dos job’s. Vejam os links abaixo:


15. Vamos testar o job de stop, rodem o job que criamos chamado Stop_SQLDiag:

 Se ele rodar com sucesso vocês verão a tela abaixo:


 Confirmem nos serviços do Windows se o SQLdiag realmente foi parado:

 Nossos jobs estão perfeitamente funcionais, no exemplo acima criamos jobs que irão controlar o SQLdiag para que ele gere coletas a cada 12 horas, primeiro ciclo das 06h00 às 17h55 e segundo ciclo das 18h00 às 05h55.

 Agora já temos nosso ambiente sendo monitorado com o SQLdiag! Será que alguns de vocês estão se perguntando o que fazer depois com os dados gerados? Pois é, este é o assunto do próximo post, não percam! Um abraço!

Nenhum comentário:

Postar um comentário