Falha ao reciclar o ERRORLOG!


Fala pessoal tranquilo? Espero que sim!

Hoje vou falar sobre um problema que enfrentei recentemente ao fazer a reciclagem do ERRORLOG, bom, acredito que a maioria conhece o comando abaixo:

SP_CYCLE_ERRORLOG

Este comando fecha o arquivo de log atual do SQL Server e inicia um novo, é o mesmo que acontece quando o serviço do SQL Server é iniciado.


Existe um outro comando não documentado que tem o mesmo objetivo:

DBCC ERRORLOG

Agora vamos ao problema. Certo dia acessei um servidor e o log do SQL Server estava demasiadamente grande, resolvi então reciclar o mesmo. Porém quando pedi para ler a log atual veja que interessante, encontrei datas e horários misturados, basicamente datas recentes no início e antigas do meio pra frente:

2014-02-04 11:11:24.28 Backup
2014-02-04 11:11:25.53 Backup
2014-02-04 11:11:26.08 Backup
2014-02-04 11:11:27.08 Backup
2014-02-04 11:11:31.53 Backup
2014-02-04 11:30:09.87 spid77
2013-07-03 06:07:57.78 spid74
2013-07-03 06:18:20.60 spid74
2013-07-03 06:23:11.86 spid74
2013-07-03 06:41:46.56 spid73
2013-07-03 06:41:46.58 Backup

Estranho, não? Alguma coisa deu errado no processo de limpeza da log e inicialização de um novo, resolvi então olhar o EVENT VIEWER na parte de Application e notem o erro que encontrei:

 
O erro já nos remete à conclusão de que algo está impedindo o SQL Server de manipular o arquivo. Resolvi repetir o procedimento porém desta vez deixei a ferramenta da Sysinternals chamada Process Monitor ativa, filtrando o Process Name em cima do binário do SQL Server chamado sqlservr.exe. Rodei o comando e veja só o que foi registrado:

 
Obs.: Apaguei o começo do diretório por questões de segurança.

Na coluna Result aparece SHARING VIOLATION, basicamente, isto indica que à operação desejada não pode ser feita no arquivo pois o mesmo estava sendo utilizado por alguma outra coisa no Windows, interessante. Com esta informação, usei outra ferramenta da Sysinternals, o Process Explorer, fui até a aba Find, depois Find Handle or DLL substring e digitei errorlog, vejam os resultados:


Obs.: Apaguei o começo dos diretórios e uma das linhas por questões de segurança.

Notem o binário koqerr.exe, com uma rápida pesquisa notei que ele corresponde à ferramenta de monitoração da IBM chamada IBM Tivoli Monitoring. Agora o próximo passo para resolver o problema já estava mais claro, parei os serviços do agente de monitoração, garanti que seus binários não estavam mais executando e tentei novamente limpar a log, vejam agora o diretório do ERRORLOG:


Sucesso! Um novo arquivo de log foi criado!

Link para download das ferramentas que foram utilizadas neste post:

PROCESS MONITOR 3.1

PROCESS EXPLORER 16.02

Por hoje é só pessoal, espero que o post tenha sido útil a vocês! Um abraço!

Nenhum comentário:

Postar um comentário