テーブルが最後に更新された時刻を見つける


16

クエリ:

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

...テーブルが最後に作成および変更された時間を(DDLの観点から)教えてくれます。しかし、実際のデータが最後にテーブルに挿入または削除された時間を知りたいのです。SQL Serverでこれを取得することは可能ですか?

回答:


22

あなたはからアイデアを得ることができるかもしれません

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

ただし、そこにあるデータはサービスの再起動後も保持されず、要件に対して正確でない可能性があります(たとえばDELETE FROM T WHERE 1=0、実際に行が削除されていなくても、実行により時間が更新されます)


単一のテーブルではなく、データベース内のすべてのテーブルに対して一度にこれを実行する方法はありますか?感謝
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()
マーティン・スミス

last_user_updateの日付も、一意のインデックス違反の例外後に更新されます。これを回避する方法はありますか?
АленаШлыкова
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.