40

最後にテーブルが更新された時刻を取得したい (挿入、削除、更新)。

このクエリを試しました。

SELECT last_user_update
FROM sys.dm_db_index_usage_stats
WHERE object_id=object_id('T')

ただし、そこにあるデータは、サービスの再起動後も保持されません。

サービスが再起動しても統計を保持したい。どうすれば達成できますか?

4

7 に答える 7

80

構造が変更された (新しい列が追加された、列が変更されたなど) という点でテーブルが最後に更新されたときについて話している場合は、次のクエリを使用します。

SELECT name, [modify_date] FROM sys.tables

DML操作(挿入、更新、削除)について話している場合は、そのDMVが定期的に提供するものを永続化するか、すべてのテーブルにトリガーを作成してその「最終変更」日を記録する必要があります-または、SQL Server 2008 以降の変更データ キャプチャなどの機能を確認してください。

于 2013-07-05T12:58:13.557 に答える
20

データの更新を確認したい場合は、必要な権限でこの手法を使用できます。

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')
于 2014-11-03T11:41:45.487 に答える
4

データ変更に関する監査データを永続化するには、関心のある各テーブルに DML トリガーを実装する必要があります。監査テーブルを作成し、トリガーにコードを追加してこのテーブルに書き込む必要があります。

DML トリガーの実装方法の詳細については、この MDSN の記事http://msdn.microsoft.com/en-us/library/ms191524%28v=sql.105%29.aspxを参照してください。

于 2013-07-05T13:19:47.547 に答える