最近、大きなテーブルの断片化が非常に高いデータベースに遭遇しました。
ページ数> 1'000'000、断片化99、...
このテーブルが再編成/再構築せずに経過した時間を知りたいのですが。そうすれば、その日に行われた変更を確認して、原因を突き止めることができます。 (また、私のレポートでは「このデータベースは適切に維持されていないので...」と表示されます。)
影響を受けるテーブルをすばやく再編成するジョブを設定している最中(おそらく今夜)、インデックス操作の履歴を提供できる解決策がありがたいです。そうでない場合は、将来このデータを確認できることを知っているだけでも非常に役立ちます。
SQL Serverは、インデックスが最後に再構築された日時を維持せず、統計が最後に更新された日時の情報を保持します。
これは、STATS_DATE
関数を使用して見つけることができます。
Olaのインデックスメンテナンスソリューション または Michelle Ufford's-Index Defrag Script を使用できます。これらのスクリプトはコミュニティで広くテストされており、非常に柔軟性があるため、環境のニーズに応じて適応できます。
2008R2以降のSQL Server SP2には、新しいDMF sys.dm_db_stats_properties
があり、統計が最後に更新されたときに、
modifier_counter:最後の更新以降の、統計を導く列の変更の数
Kinが前述したように、この情報はSQL Serverに格納されていないため、取得できません。 technetのこの記事を参照 を参照してください。 Olaのスクリプトを使用しているため、デフォルトを変更しない限り、IndexOptimizeジョブの出力はエラーログと同じ場所に送られます。