Поиск последнего обновления таблицы

17

Запрос:

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

... скажет мне в последний раз, когда таблица была создана и изменена (с точки зрения DDL). Но я хочу знать, когда в последний раз фактические данные были либо вставлены, либо удалены из таблицы. Возможно ли получить это в SQL Server?

dublintech
источник

Ответы:

22

Вы можете получить представление от

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

но данные там не сохраняются при перезапуске службы и могут не соответствовать вашим требованиям (например, при запуске DELETE FROM T WHERE 1=0будет обновляться время, даже если на самом деле строки не были удалены)

Мартин Смит
источник
Есть ли способ, которым я могу запустить это для всех таблиц в базе данных за раз, вместо одной таблицы? спасибо
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()
Мартин Смит
Дата last_user_update также обновляется после исключения исключения уникального индекса. Есть ли способ обойти это?
Алена Шлыкова