J'ai récemment rencontré une base de données, qui a une fragmentation très élevée sur de grandes tables.
Page de page> 1'000'000 avec fragmentation 99, ...
J'aimerais savoir combien de temps cette table a disparu sans réorganisation/reconstruction. De cette façon, je peux examiner les modifications apportées à cette date, pour essayer de trouver une cause. (Aussi il semblerait beau mon rapport "Cette base de données n'a pas été correctement entretenue depuis ...)
Comme je suis en train de mettre en place un emploi pour réorganiser rapidement les tables concernées (cette nuit probablement), toute solution qui pourrait me proposer une histoire d'opérations d'index serait très appréciée. Sinon, sachant simplement que je peux vérifier que ces données à l'avenir seraient très utiles.
SQL Server ne conserve pas quand un index a été reconstruit, il conserve à la place des informations lorsque les statistiques ont été mises à jour.
Qui peut être trouvé en utilisant le STATS_DATE
une fonction.
Vous pouvez utiliser Solution de maintenance de l'index de OLA ou Script de défragment d'index de Michelle Ufford . Ces scripts sont largement testés dans la communauté et sont beaucoup flexibles afin que vous puissiez vous adapter conformément à vos besoins dans votre environnement.
SQL Server SP2 pour 2008R2 et UP a une nouvelle DMF sys.dm_db_stats_properties
qui vous dit quand vos statistiques ont été mises à jour avec d'autres informations comme
modification_counter: Nombre de modifications de la colonne qui conduit la statistique, depuis la dernière mise à jour
En tant que Kin indiqué ci-dessus, il n'est pas possible d'obtenir ces informations car elle n'est pas stockée par SQL Server. Veuillez vous reporter à cet article sur TechNet . Étant donné que vous utilisez les scripts de OLA, sauf si vous avez changé les valeurs par défaut, la sortie du travail de l'indexOptimize doit aller au même emplacement que votre journal d'erreur.