Menemukan terakhir kali tabel diperbarui

17

Kueri:

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

... akan memberi tahu saya kapan terakhir kali sebuah tabel dibuat dan dimodifikasi (dari perspektif DDL). Tapi saya ingin tahu kapan data aktual terakhir dimasukkan atau dihapus dari tabel. Apakah mungkin untuk mendapatkan ini di SQL Server?

dublintech
sumber

Jawaban:

22

Anda mungkin bisa mendapatkan ide dari

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

tetapi data yang ada tidak bertahan di restart layanan dan mungkin tidak akurat untuk kebutuhan Anda (misalnya menjalankan DELETE FROM T WHERE 1=0akan memperbarui waktu meskipun tidak ada baris yang benar-benar dihapus)

Martin Smith
sumber
Apakah ada cara saya bisa menjalankan ini untuk semua tabel dalam database sekaligus, bukan tabel tunggal? terima kasih
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
Tanggal last_user_update juga diperbarui setelah pengecualian pelanggaran indeks unik. Apakah ada cara untuk mengatasi ini?
Алена Шлыкова