PowerShell e o dia a dia do DBA SQL SERVER

(Gravando Mensagens no EventViewer)

 

 

 

Pessoal,

 

Vamos Gravar erros no Eventlog do Windows ?

 

A chamada da função é essa

 

write-eventlog "TesteDoWriteLog" "Gerei um Evento de Erro" 1

 

Aonde eu passo o Source, o erro e o tipo.

 

Vamos Fazer  um Teste ?..copie este codigo e coloque no PS....depois olhe no eventviewer da sua maquina

 

Function write-eventlog ([string] $Ssource, [string] $Evento, [int] $Tipo)

#$tipo = 1 Error, 2 Warning, 3 Informatoin, 4 SuccessAudit, 5 FailureAudit

{

$event=new-object System.Diagnostics.EventLog("Application")

$event.Source=$Ssource

 

switch ($tipo) {

1   { $Infevt=[System.Diagnostics.EventLogEntryType]::Error }

2   { $Infevt=[System.Diagnostics.EventLogEntryType]::Warning }

3   { $Infevt=[System.Diagnostics.EventLogEntryType]::Information }

4   { $Infevt=[System.Diagnostics.EventLogEntryType]::SuccessAudit }

5   { $Infevt=[System.Diagnostics.EventLogEntryType]::FailureAudit }

}

 

$event.WriteEntry($evento,$Infevt,70)

}

 

write-eventlog "TesteDoWriteLog" "Gerei um Evento de Erro" 1

 

write-eventlog "TesteDoWriteLog" "Gerei um Evento de Warning"  2

 

write-eventlog "TesteDoWriteLog" "Gerei um Evento de Information "  3

 

Mas aonde uso isso ?

 

Digamos que estamos fazendo algum script no powershell e necessitamos que um determinado erro va para o eventviewer da maquina central

 

algo como um truncate e tabela não existe.

 

$ServidorCentral = "SERVER1\MSSQLSERVER_1"

$DatabaseCentral = "DBA"

 

 

$sql = "truncate table diario.tb_LinkeDServersErroNaoExiste"

Invoke-Sqlcmd -ServerInstance $ServidorCentral -Database $DatabaseCentral -Query $sql -ErrorAction "silentlyContinue"

if (!$?)

   {  

      $Erro = "Verifique Se o Servidor Central/Database/Tabela existem  !!! "

      write-eventlog DBACheckLIst $Erro 1

      exit;

   }

 

 

Assim coloco um evento para que se alguma ferramenta estiver monitorando possa pegar.

 

O -ErrorAction "silentlyContinue" me indica que se der um erro continue sem gerar msg de erro no PS

o if (!$?)  eu pego se houver algum erro e trato ele.

 

 

 

 

 

 

No meu primeiro Artigo eu mostro como rodar os scripts

PowerShell e o dia a dia do DBA SQL SERVER - INTRODUÇÃO e checando a conectividade de linked servers

 

 

Laerte Poltronieri Junior
PowerShell no Dia a Dia do DBA 
http://laertejuniordba.spaces.live.com