Znajdowanie ostatniej aktualizacji tabeli

17

Zapytanie:

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

... powie mi, kiedy tabela została utworzona i zmodyfikowana po raz ostatni (z perspektywy DDL). Ale chcę wiedzieć, kiedy ostatnie dane zostały wstawione lub usunięte z tabeli. Czy można to uzyskać w programie SQL Server?

dublintech
źródło

Odpowiedzi:

22

Możesz być w stanie uzyskać pomysł

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

ale dane, które nie są utrwalane podczas ponownego uruchamiania usługi i mogą nie być dokładne dla twoich wymagań (np. uruchomienie DELETE FROM T WHERE 1=0zaktualizuje czas, nawet jeśli żadne wiersze nie zostały faktycznie usunięte)

Martin Smith
źródło
Czy jest jakiś sposób, aby uruchomić to dla wszystkich tabel w bazie danych naraz, zamiast pojedynczej tabeli? dzięki
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
Data ostatniej aktualizacji użytkownika jest również aktualizowana po wyjątku dotyczącym naruszenia indeksu unikatowego. Czy jest na to jakiś sposób?
Алена Шлыкова