web-dev-qa-db-ja.com

インデックスが最後に再構築/再編成された時期を確認する

最近、大きなテーブルの断片化が非常に高いデータベースに遭遇しました。

ページ数> 1'000'000、断片化99、...

このテーブルが再編成/再構築せずに経過した時間を知りたいのですが。そうすれば、その日に行われた変更を確認して、原因を突き止めることができます。 (また、私のレポートでは「このデータベースは適切に維持されていないので...」と表示されます。)

影響を受けるテーブルをすばやく再編成するジョブを設定している最中(おそらく今夜)、インデックス操作の履歴を提供できる解決策がありがたいです。そうでない場合は、将来このデータを確認できることを知っているだけでも非常に役立ちます。

5
Reaces

SQL Serverは、インデックスが最後に再構築された日時を維持せず、統計が最後に更新された日時の情報を保持します。

これは、STATS_DATE関数を使用して見つけることができます。

Olaのインデックスメンテナンスソリューション または Michelle Ufford's-Index Defrag Script を使用できます。これらのスクリプトはコミュニティで広くテストされており、非常に柔軟性があるため、環境のニーズに応じて適応できます。

2008R2以降のSQL Server SP2には、新しいDMF sys.dm_db_stats_properties があり、統計が最後に更新されたときに、

modifier_counter:最後の更新以降の、統計を導く列の変更の数

3
Kin Shah

Kinが前述したように、この情報はSQL Serverに格納されていないため、取得できません。 technetのこの記事を参照 を参照してください。 Olaのスクリプトを使用しているため、デフォルトを変更しない限り、IndexOptimizeジョブの出力はエラーログと同じ場所に送られます。