Localizando a última vez que uma tabela foi atualizada

16

A pergunta:

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

... me dirá a última vez que uma tabela foi criada e modificada (de uma perspectiva DDL). Mas quero saber a última vez que os dados reais foram inseridos ou removidos da tabela. É possível obter isso no SQL Server?

dublintech
fonte

Respostas:

22

Você pode ter uma ideia 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') 

mas os dados não persistidos durante o serviço são reiniciados e podem não ser precisos para seus requisitos (por exemplo, a execução DELETE FROM T WHERE 1=0atualizará o horário, mesmo que nenhuma linha tenha sido realmente excluída)

Martin Smith
fonte
Existe alguma maneira de executar isso para todas as tabelas em um banco de dados ao mesmo tempo, em vez de tabela única? graças
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
A data last_user_update também é atualizada após uma exceção de violação de índice exclusiva. Existe alguma maneira de contornar isso?
Алена Шлыкова 27/02/19