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 que 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
O 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.