SQL Server – Como identificar recursos descontinuados (deprecated features) sendo utilizados na instância (Extended Events – XE)

Visualizações: 218
Tempo de Leitura: 4 minutos

Fala pessoal!

Um assunto que não costumo ver muito no dia a dia é a preocupação de DBA’s e desenvolvedores sobre o uso de recursos marcados como “deprecated” pela Microsoft, ou seja, estão marcados para serem removidos em alguma futura versão do SQL Server de acordo com o roadmap da Microsoft.

Embora possamos observar que alguns recursos estão desde a versão 2000 marcados como deprecated e ainda estão presentes na versão 2017, é muito perigoso manter sistemas, rotinas e principalmente, criar novos desenvolvimentos utilizando recursos que podem ser removidos, “quebrar” seu sistema e te pegar de surpresa durante alguma atualização de versão.

A ideia desse post é demonstrar como você pode identificar recursos que estão marcados para desativação e tomar as medidas adequadas para alterar seu código, de modo que sejam utilizadas as boas práticas de desenvolvimento ao estar sempre alinhados com as mais recentes funcionalidades do produto.

Para atender a essa demanda, vou utilizar o recurso de Extended Events (XE) e os eventos “Deprecation Announcement” e “Deprecation Final Support”:

  • Deprecation Announcement: Esse evento é acionado quando é identificado um recurso que foi anunciado como “deprecated”, ou seja, será desativado em uma futura versão do SQL Server, mas não será na próxima versão.
  • Deprecation Final Support: Esse evento é acionado quando é identificado um recurso que foi anunciado como “deprecated” e será SIM, desativado já na próxima versão do SQL Server. Esses são os casos mais preocupantes a curto prazo, pois esses recursos vão parar de funcionar assim que você atualizar o SQL Server

Se você já acompanha meu blog há algum tempo, deve lembrar de outros posts que já fiz sobre Extended Events:
SQL Server – Como criar um monitoramento de erros e exceções no seu banco de dados utilizando Extended Events (XE)
SQL Server – Como gerar um histórico de deadlocks para análise de falhas em rotinas

Para isso identificar quais são esses recursos que você utiliza no seu ambiente, vamos criar uma nova sessão utilizando XE

Escolhi não utilizar nenhum template e escolhi os 2 eventos já citados, conforme o print

Nesta tela você pode escolher algumas colunas que gostaria de coletar informações

Nesta etapa da configuração, você deve definir onde o arquivo de resultados será gravado, se será gravado como arquivo físico no disco e definindo o tamanho máximo que ele irá atingir ou utilizando o ring_buffer, para ter sempre as informações mais recentes (uso recomendado para gravação contínua).

Segue o resumo das configurações que utilizei para a criação desse Extended Event.

Segue abaixo, o código-fonte do script gerado:

Seguem exemplos utilizados para testar o recurso:

E agora, vou utilizar esse script para coletar os dados gravados:

Visualizando os resultados:

Caso vocês queiram conhecer todos os recursos que estão marcados como deprecated, acessem esse artigo aqui e em caso de migração para nova versão do SQL Server, não deixe de utilizar essa dica junto com o Data Migration Assistant (DMA).

É isso aí, pessoal!

Espero que tenham gostado desse post e até a próxima.
Forte abraço!