Encontrar la última vez que se actualizó una tabla

17

La consulta:

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

... me dirá la última vez que se creó y modificó una tabla (desde una perspectiva DDL). Pero quiero saber la última vez que se insertaron o eliminaron datos reales de la tabla. ¿Es posible obtener esto en SQL Server?

dublintech
fuente

Respuestas:

22

Es posible que pueda tener una idea de

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

pero los datos no persisten en los reinicios del servicio y es posible que no sean precisos para sus requisitos (por ejemplo, la ejecución DELETE FROM T WHERE 1=0actualizará la hora aunque no se hayan eliminado las filas)

Martin Smith
fuente
¿Hay alguna forma de ejecutar esto para todas las tablas de una base de datos a la vez, en lugar de una sola tabla? gracias
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 fecha last_user_update también se actualiza después de una excepción de violación de índice única. ¿Hay alguna forma de evitar esto?
Алена Шлыкова