Conversa de DBA

Utilize versões atualizadas do SQL Server e níveis de compatibilidade adequados para evitar riscos e desperdícios

Versões desatualizadas do SQL Server são um problema recorrente, mesmo em empresas com DBAs responsáveis por cuidar da infraestrutura.

A cada novo service pack disponibilizado pela Microsoft, diversas melhorias são implementadas com o intuito de resolver problemas com segurança, performance, memória, entre outros. Porém, geralmente por negligência ou desconhecimento dos responsáveis, os servidores sequer são atualizados com essas versões menores e sem custo. Isso significa que, não raro, empresas precisam lidar com problemas que já tem soluções disponíveis e sem custo.

Verificar qual a versão do SQL Server está rodando é tarefa trivial. Poucas consultas simples, que podem ser realizadas diretamente no Management Studio, são suficientes para obter informações detalhadas a esse respeito.

SELECT @@VERSION; 
SELECT SERVERPROPERTY('ProductVersion'); 

Sabendo a versão em operação é fácil determinar o nível de desatualização atual e obter os pacotes necessários para “colocar a casa em ordem”.

Outro aspecto importante a analisar, considerando a versão do SQL que estiver em produção, é o nível de compatibilidade que está setado em seu banco de dados.

Configuração do Nível de Compatibilidade

Compatibility Level é uma configuração por banco de dados que permite definir o comportamento dos processamentos de consulta de acordo com uma versão específica do SQL Server. 

Trata-se uma ferramenta valiosa para ajudar na modernização de banco de dados, permitindo que o Mecanismo de Banco de Dados do SQL Server seja atualizado, mantendo o status funcional de aplicativos conexão e o mesmo nível de compatibilidade do banco de dados antes da atualização. Isso significa que é possível atualizar de uma versão mais antiga de SQL Server (como SQL Server 2008) para SQL Server 2019 (15.x) ou Banco de Dados SQL do Azure (incluindo a Instância Gerenciada) sem alterações do aplicativo (exceto a conectividade do banco de dados).

É uma boa prática definir essa configuração para a mais atual possível de acordo com o servidor SQL Server instalado, à fim de obter as melhorias implementadas nas versões mais recentes. Entretanto, com frequência, o ajuste no nível de compatibilidade do SQL Server é mantido desatualizado não permitindo que as empresas obtenham todas as vantagens possíveis para os investimentos em novas versões. Apenas como ilustração, a partir da compatibilidade 120 o avaliador de cardinalidade é bem mais performático do que nas versões anteriores.

A identificação dos níveis de compatibilidade em produção pode ser facilmente determinado com poucas consultas.

SELECT 
    name, 
    compatibility_level 
FROM sys.databases 
ORDER BY name 

Alterar essa configuração em todos seus bancos de dados, também não representa grande desafio.

SELECT 
    'ALTER DATABASE ' +  name + ' SET COMPATIBILITY_LEVEL = 150;' 
FROM sys.databases 
ORDER BY name 

Tenha em mente, entretanto, que os planos de execução podem estar salvos utilizando uma cardinalidade anterior a compatibilidade 120, e isso pode ocasionar alguma sobrecarga no seu servidor, até os mesmos serem recompilados para a nova cardinalidade. Por isso, sempre tenha certeza de testar modificações. Simplicidade não é justificativa para irresponsabilidade.

Em Resumo
  • O fato

    É comum encontrar, em ambientes produtivos, versões desatualizadas do SQL Server, abrindo espaço para problemas de segurança e performance. Além disso, mesmo em ambientes atualizados, é comum que o nível de compatibilidade esteja ajustado para uma versão antiga, fazendo com que as empresas não tenham retorno consistente para os investimentos em atualização.
  • O insight

    Faça consultas simples para verificar a versão do banco de dados em produção e o nível de compatibilidade configurado. É bem provável que você tenha "ganho de performance" rápido e gratuito disponível para potencializar os negócios.

Marcelo Michelon

Especialista na modelagem, manutenção e otimização de bases de dados e na gestão de servidores rodando SQL Server. Mais de 15 anos de experiência operando e potencializando soluções de larga escala.

Talvez você goste também

Carregando posts…

Mais posts da série Conversa de DBA

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *