Clique no banner para conhecer e adquirir o meu treinamento de Bancos de Dados no Azure

SQL Server – Utilizando a traceflag 3226 para evitar a gravação de mensagens informativas geradas por backups no log do SQL Server

Post Views 888 views
Reading time 4 minutes

Hey guys!

Nesse post, eu gostaria de compartilhar com vocês a solução de uma dúvida que me enviaram hoje no Telegram, onde perguntaram como fazia para ocultar as mensagens informativas que o comando BACKUP DATABASE produz durante a sua execução e que também as grava no log do SQL Server.

Introduction

Caso você nunca tenha feito um backup no SQL Server (!!!), um exemplo bem simples da utilização do comando BACKUP DATABASE é assim, onde utilizo o parâmetro STATS = 10 para que a cada 10% na evolução do processamento do backup, seja gerada uma saída para acompanhar a execução:

Result:

E analisando o nosso log do SQL Server, podemos observar que foram gerados 2 registros por conta desse backup:

Se você tem vários databases na sua instância, inclusive com backups de log sendo gerados com uma frequência alta, essas mensagens informativas podem acabar consumindo muito espaço e dificultando uma busca por informações quando algum problema realmente ocorrer no seu ambiente.

Utilizando a traceflag 3226

Para contornar esse cenário, podemos utilizar a traceflag 3226, que vai suprimir essas mensagens informativas geradas pelo comando BACKUP DATABASE. Caso você não conheça, traceflags são parâmetros utilizados para modificar temporariamente algum comportamento padrão do banco de dados. Para conhecer a lista completa de traceflags do SQL Server, acesse a documentação oficial de Traceflags do SQL Server.

A sua utilização é bem simples:

Result:

Após executar o backup, vamos analisar novamente o log do SQL Server:

E como ficou demonstrado, executamos o backup e não foi gerado nenhuma mensagem informativa, nem mesmo o de log. Mas será que essa traceflag vai suprimir mensagens de erro também ? Vamos testar!

Vou executar o comando abaixo, tentando fazer o backup de um database que não existe, para forçar um erro:

E agora vamos ver se esse erro ficou registrado no log do SQL Server:

Está aí a nossa mensagem de erro. Ou seja, as mensagens de avisos foram suprimidas do log e as mensagens de erro continuam sendo gravadas.

Ativando e desativando traceflags

Como vimos acima, podemos ativar a traceflag 3226 utilizando o comando abaixo:

Uma vez que você execute esse traceflag, ela estará ativada até o serviço do SQL Server ser parado, ou seja, não precisa ser executada a cada vez que um backup for realizado. Caso o serviço do SQL seja reiniciado, a traceflag precisará ser ativada novamente.

Caso você queira parar a traceflag 3226 e voltar ao comportamento padrão, sem ter que reiniciar o serviço do SQL Server, basta executar o comando abaixo:

E se você quiser que essa traceflag seja ativada automaticamente, sempre que o serviço do SQL Server for iniciado ? Neste caso, é só alterar o parâmetro de inicialização do serviço do SQL Server, acessando o SQL Server Configuration Manager:

E agora adicionamos o parâmetro -T 3226 na aba “Startup parameters”:

Caso você queira adicionar mais de uma traceflag na inicialização do SQL Server, basta adicioná-las separadamente:

Bom pessoal, espero que tenham gostado desse artigo e que ele acabe sendo útil para vocês.
Um grande abraço e até o próximo post.