Recentemente, encontrei um banco de dados com fragmentação muito alta em tabelas grandes.
Contagem de páginas > 1'000'000 com fragmentação 99,...
Gostaria de saber quanto tempo esta tabela ficou sem uma reorganização/reconstrução. Assim posso rever as alterações feitas nessa data, para tentar encontrar uma causa. (Também ficaria bem no meu relatório "este banco de dados não foi mantido adequadamente desde ...)
Como estou no processo de configurar um trabalho para reorganizar rapidamente as tabelas afetadas (provavelmente esta noite), qualquer solução que pudesse me oferecer um histórico de operações de índice seria muito apreciada. Caso contrário, simplesmente saber que posso verificar esses dados no futuro seria muito útil.
O SQL Server não mantém quando um índice foi reconstruído pela última vez, em vez disso, ele mantém as informações quando as estatísticas foram atualizadas pela última vez.
Isso pode ser encontrado usando a
STATS_DATE
função.Você pode usar a solução de manutenção de índice de Ola ou o script de desfragmentação de índice de Michelle Ufford . Esses scripts são amplamente testados na comunidade e são muito flexíveis para que você possa adaptá-los conforme suas necessidades em seu ambiente.
O SQL Server SP2 para 2008R2 e superior tem um novo DMF
sys.dm_db_stats_properties
que informa quando suas estatísticas foram atualizadas pela última vez com outras informações comoComo Kin observou acima, não é possível obter essas informações, pois não são armazenadas pelo SQL Server. Consulte este artigo na technet . Como você está usando os scripts do Ola, a menos que altere os padrões, a saída do trabalho IndexOptimize deve ir para o mesmo local que o log de erros.