查询:
SELECT name AS TableName, create_date AS CreatedDate, modify_date as ModifyDate FROM sys.tables order by ModifyDate;
…会告诉我上次创建和修改表的时间(从 DDL 的角度来看)。但我想知道上次从表中插入或删除实际数据的时间。是否有可能在 SQL Server 中得到这个?
你也许可以从中得到一个想法
SELECT last_user_update FROM sys.dm_db_index_usage_stats WHERE database_id = db_id() AND object_id = object_id('dbo.YourTable')
但是那里的数据不会在服务重新启动时保持不变,并且可能不符合您的要求(例如DELETE FROM T WHERE 1=0,即使没有实际删除任何行,运行也会更新时间)
DELETE FROM T WHERE 1=0
有什么方法可以一次为数据库中的所有表运行它,而不是单个表?
SELECT 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()