最後にテーブルが更新された時刻を取得したい (挿入、削除、更新)。
このクエリを試しました。
SELECT last_user_update
FROM sys.dm_db_index_usage_stats
WHERE object_id=object_id('T')
ただし、そこにあるデータは、サービスの再起動後も保持されません。
サービスが再起動しても統計を保持したい。どうすれば達成できますか?
最後にテーブルが更新された時刻を取得したい (挿入、削除、更新)。
このクエリを試しました。
SELECT last_user_update
FROM sys.dm_db_index_usage_stats
WHERE object_id=object_id('T')
ただし、そこにあるデータは、サービスの再起動後も保持されません。
サービスが再起動しても統計を保持したい。どうすれば達成できますか?
構造が変更された (新しい列が追加された、列が変更されたなど) という点でテーブルが最後に更新されたときについて話している場合は、次のクエリを使用します。
SELECT name, [modify_date] FROM sys.tables
DML操作(挿入、更新、削除)について話している場合は、そのDMVが定期的に提供するものを永続化するか、すべてのテーブルにトリガーを作成してその「最終変更」日を記録する必要があります-または、SQL Server 2008 以降の変更データ キャプチャなどの機能を確認してください。
データの更新を確認したい場合は、必要な権限でこの手法を使用できます。
SELECT OBJECT_NAME(OBJECT_ID) AS DatabaseName, last_user_update,*
FROM sys.dm_db_index_usage_stats
WHERE database_id = DB_ID( 'DATABASE')
AND OBJECT_ID=OBJECT_ID('TABLE')
データ変更に関する監査データを永続化するには、関心のある各テーブルに DML トリガーを実装する必要があります。監査テーブルを作成し、トリガーにコードを追加してこのテーブルに書き込む必要があります。
DML トリガーの実装方法の詳細については、この MDSN の記事http://msdn.microsoft.com/en-us/library/ms191524%28v=sql.105%29.aspxを参照してください。