4

この質問は基本的にこの質問の拡張です:

データベーステーブルがアクセスされているかどうかを確認するにはどうすればよいですか?「SELECTトリガー」のようなものが欲しい

著者が彼の投稿で解決策として提供したクエリでは、null値は、SQLServerが最後に再起動されてからテーブルにアクセスされていないことを意味すると思います。

私の質問は次のとおりです。最後のアクセスがSQLの最後の再起動より前であったかどうか、テーブルが最後にアクセスされたのはいつかを知る方法はありますか?また、SQLが最後に再起動されたのはいつかわかりますか?

4

1 に答える 1

10

SQL Server 2008のSQLサーバーの開始時刻については、

select sqlserver_start_time from sys.dm_os_sys_info

サーバーの再起動以降の最後のユーザーアクセスについては、

select DB_NAME(us.[database_id]) as [db], OBJECT_NAME(us.[object_id], us.[database_id]) as [object], 
MAX(us.[last_user_lookup]) as [last_user_lookup], MAX(us.[last_user_scan]) as [last_user_scan], MAX(us.[last_user_seek]) as [last_user_seek] 
from sys.dm_db_index_usage_stats as us 
where us.[database_id] = DB_ID() AND us.[object_id] = OBJECT_ID('tblname')
group by us.[database_id], us.[object_id]; 

このテーブルは毎日ログに記録するので、再起動後に取得します。また、削除された後のインデックス監査としても機能します。

于 2012-04-21T00:43:20.570 に答える