Trovare l'ultima volta che una tabella è stata aggiornata


17

La domanda:

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

... mi dirà l'ultima volta che una tabella è stata creata e modificata (dal punto di vista DDL). Ma voglio sapere l'ultima volta che i dati effettivi sono stati inseriti o rimossi dalla tabella. È possibile ottenere questo in SQL Server?

Risposte:


22

Potresti essere in grado di ottenere un'idea da

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

ma i dati non persistono tra tutti i riavvii del servizio e potrebbero non essere precisi per le tue esigenze (ad esempio, l'esecuzione DELETE FROM T WHERE 1=0eseguirà l'aggiornamento del tempo anche se nessuna riga è stata effettivamente eliminata)


Esiste un modo per eseguirlo per tutte le tabelle in un database alla volta, anziché una singola tabella? grazie
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

Anche la data dell'ultimo_utente_aggiornamento viene aggiornata dopo un'eccezione di violazione dell'indice univoca. C'è un modo per aggirare questo?
Алена Шлыкова,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.