Estou usando os scripts de Ola para atualizações de estatísticas e, para um índice específico, quero fazer verificações completas ao atualizar as estatísticas (para resolver o problema da chave ascendente em conjunto com o sinalizador de rastreamento 2389). Temos milhares de bancos de dados idênticos (é assim que o software do nosso fornecedor funciona) e gostaria de ter certeza de que todas as estatísticas desse índice estão de fato fazendo varreduras completas, não amostrando. Como faço para executar uma consulta para verificar todos os bancos de dados?
Posso usar DBCC SHOW_STATISTICS()
, mas isso retorna três conjuntos de resultados - é possível colocar apenas o primeiro conjunto de resultados em uma tabela e ignorar os outros dois? Existe uma opção melhor?
Você pode ver quantas linhas foram amostradas (entre outras coisas) usando o
sys.dm_db_stats_properties
DMF:Você pode adicionar um pouco de matemática para fazer a comparação de rows_sampled vs rows. Dado que haverá movimento de dados na tabela depois de atualizar as estatísticas, não esperaria que fosse 100%, mas você pode supor que, se uma verificação completa for feita, você verá pelo menos 80% da tabela atual Tamanho:
Agora, você só precisa usar alguma ferramenta para executá-lo em seus milhares de bancos de dados. Suspeito que, se você estiver gerenciando milhares de bancos de dados, já tenha uma maneira estabelecida de fazer isso. Como um PSA, mencionarei que sp_MSforeachdb às vezes perde databases , portanto, considere evitar esse procedimento armazenado.