Ermitteln, wann eine Tabelle das letzte Mal aktualisiert wurde

16

Die Abfrage:

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

... gibt an, wann eine Tabelle zum letzten Mal erstellt und geändert wurde (aus DDL-Sicht). Ich möchte jedoch wissen, wann die tatsächlichen Daten zum letzten Mal in die Tabelle eingefügt oder aus der Tabelle entfernt wurden. Ist es möglich, dies in SQL Server zu bekommen?

Dublintech
quelle

Antworten:

22

Vielleicht können Sie sich ein Bild machen von

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') 

aber die Daten dort nicht über Dienst neu gestartet wird beibehalten wird und möglicherweise nicht für Ihre Anforderungen genau sein (zB läuft DELETE FROM T WHERE 1=0die Zeit aktualisieren , auch wenn keine Zeilen tatsächlich gelöscht wurden)

Martin Smith
quelle
Kann ich dies auf irgendeine Weise für alle Tabellen in einer Datenbank gleichzeitig ausführen, anstatt für eine einzelne Tabelle? danke
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
Das Datum des letzten_Benutzers_Updates wird auch nach einer eindeutigen Indexverletzungsausnahme aktualisiert. Gibt es einen Weg, dies zu umgehen?
Алена Шлыкова