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?

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)


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.