Gerenciar estatísticas no SQL Server sempre foi uma parte essencial do desempenho e da manutenção do banco de dados. No entanto, alterações de esquema em tabelas com estatísticas criadas manualmente costumavam ser um problema — essas estatísticas podiam bloquear mudanças, exigindo ações manuais para removê-las. Felizmente, a partir do SQL Server 2022 (16.x), esse cenário mudou com a introdução da opção AUTO_DROP.
O Que é AUTO_DROP?
A opção AUTO_DROP é um novo recurso disponível no SQL Server 2022, no Banco de Dados SQL do Azure e na Instância Gerenciada do SQL do Azure. Com ela, você pode criar estatísticas manuais que se comportam como as estatísticas geradas automaticamente — ou seja, elas não bloqueiam alterações de esquema e são descartadas automaticamente quando não forem mais necessárias.
Esse comportamento é habilitado por padrão para todos os bancos de dados novos ou migrados no SQL Server 2022.
Antes do SQL Server 2022
Se você já precisou excluir uma coluna ou modificar a estrutura de uma tabela, mas foi impedido por estatísticas manuais associadas, sabe o quão frustrante isso pode ser. No SQL Server 2019 e versões anteriores, essas estatísticas precisavam ser removidas manualmente antes de executar as alterações de esquema.
Com AUTO_DROP
Agora, ao criar estatísticas com AUTO_DROP = ON, você permite que o SQL Server as remova automaticamente caso elas entrem em conflito com alguma mudança de estrutura. Isso simplifica e agiliza tarefas administrativas e evita que estatísticas antigas fiquem “penduradas” e causem dores de cabeça.
Criando Estatísticas com AUTO_DROP
Veja um exemplo de como criar estatísticas com a opção ativada:
CREATE STATISTICS [minhaEstatistica] ON [dbo].[minhaTabela]([ID], [Data], [Usuario]) WITH AUTO_DROP = ON;Esse comando cria uma estatística chamadaminhaEstatisticana tabelaminhaTabela, comAUTO_DROPhabilitado.
Atualizando Estatísticas Existentes
Se você já tem estatísticas criadas manualmente e quer atualizar a configuração para que também usem a remoção automática, é possível fazer isso facilmente:
UPDATE STATISTICS [dbo].[minhaTabela] [minhaEstatistica]
WITH AUTO_DROP = ON;
Verificando a Configuração de AUTO_DROP
Para checar se as estatísticas existentes estão com AUTO_DROP habilitado, você pode consultar a DMV sys.stats:
SELECT object_id, [name], auto_drop FROM sys.stats;
A coluna auto_drop indica se a opção está ativa (1) ou não (0).
Cuidados e Considerações
- A opção
AUTO_DROPnão pode ser aplicada em estatísticas criadas automaticamente, pois elas já usam esse comportamento por padrão. - Em alguns casos, especialmente ao restaurar backups de versões anteriores para o SQL Server 2022, os metadados da estatística podem vir incorretos. Para corrigir isso, recomenda-se executar o seguinte comando após a restauração:
EXEC sp_updatestats;Esse comando atualiza as estatísticas e também ajusta os metadados conforme necessário, garantindo que o comportamento deAUTO_DROPseja aplicado corretamente.
Conclusão
A opção AUTO_DROP representa mais um passo em direção à automação e simplificação da administração de bancos de dados no SQL Server. Ela elimina um dos incômodos relacionados à manutenção de estatísticas e ajuda a garantir que as alterações de esquema ocorram sem atritos desnecessários.
Se você está migrando para o SQL Server 2022 ou já está usando essa versão, aproveite esse recurso para manter seu ambiente mais limpo, organizado e eficiente.