私は SQL Server 2008 R2 を使用しており、次のクエリを実行して、次の SQL を使用してデータベースでインデックスが最後に更新された時期を確認しようとしています。
SELECT last_system_update, last_user_update,
OBJECT_NAME(object_id) AS tblName
FROM sys.dm_db_index_usage_stats
WHERE database_id = DB_ID('mydatabase')
last_user_updateフィールドは正しく、SQL Server の最後の再起動以降、テーブルに対して更新が行われていない場合は NULL が含まれています。
次のクエリを実行してインデックスを再構築すると、last_system_updateフィールドに、インデックスが再構築されたことを示す日付が含まれていることが予想されます。
ALTER INDEX ALL ON dbo.MyTable
REBUILD
ただし、このフィールドは NULL のままです。実際、last_system_update フィールドは、サーバー上のすべてのデータベースのすべてのインデックスで空 (NULL) です。last_user_updateも変更されません。
私も試しました:
UPDATE STATISTICS dbo.MyTable
しかし、運がありません。では、このフィールドはいつ更新されますか? また、強制的に更新するにはどうすればよいですか?