Recherche de la dernière mise à jour d'une table

17

La requête:

SELECT 
    name AS TableName, 
    create_date AS CreatedDate, 
    modify_date as ModifyDate 
FROM sys.tables 
order by ModifyDate;

... me dira la dernière fois qu'une table a été créée et modifiée (du point de vue DDL). Mais je veux savoir la dernière fois que des données réelles ont été insérées ou supprimées de la table. Est-il possible d'obtenir cela dans SQL Server?

dublintech
la source

Réponses:

22

Vous pourriez peut-être vous faire une idée

SELECT last_user_update
FROM   sys.dm_db_index_usage_stats us
       JOIN sys.tables t
         ON t.object_id = us.object_id
WHERE  database_id = db_id()
       AND t.object_id = object_id('dbo.YourTable') 

mais les données ne sont pas conservées lors des redémarrages du service et peuvent ne pas être précises pour vos besoins (par exemple, l'exécution DELETE FROM T WHERE 1=0mettra à jour l'heure même si aucune ligne n'a été réellement supprimée)

Martin Smith
la source
Existe-t-il un moyen de l'exécuter pour toutes les tables d'une base de données à la fois, au lieu d'une seule table? merci
SQLBoy
3
@SQLBoySELECT last_user_update, t.name FROM sys.dm_db_index_usage_stats us JOIN sys.tables t ON t.object_id = us.object_id WHERE database_id = db_id()
Martin Smith
La date last_user_update est également mise à jour après une exception de violation d'index unique. Y a-t-il un moyen de contourner cela?
Алена Шлыкова