1

私は、何年にもわたる開発が行われている SQL サーバー データベースに基づくシステムに取り組んでいます。データ量はそれほど大きくありません (数 GB) が、非常に複雑です (数百のテーブル、数百のストアド プロシージャ)。

使わなくなったものをきれいにすることから始めたいと思います。毎週/毎月/四半期/年次のサイクルがあるため、1 年間使用されないものもあります。ただし、数か月間使用されていないものの短いリストがある場合は、検査によってそれらがまだ有用かどうかを判断できる場合があります.

私の意図は、すべてのデータベース オブジェクトへのアクセスのログ記録を開始することです。いくつかのアイデアがありますが、私が欲しいのは、使用されていないもののリストに変えることができるログです。いくつかのアイデアがありますが、専門家の助けが必要です。

編集:テーブル/ビュー、およびストアドプロシージャと関数へのアクセスを確認したいことも明確にしたいと思います。

4

3 に答える 3

1

これは同様の質問で、具体的にはストアド プロシージャがいつ使用されたかを尋ねます: ストアド プロシージャ の頻度と最後に使用された時間を記録するにはどうすればよいですか?

于 2009-08-03T09:01:09.287 に答える
1

をチェックsys.dm_db_index_usage_statsします: 最後の更新がlast_user_update列に保持され、最後の SELECT が または のいずれかlast_user_seekに保持されます。カウンターは SQL Server の起動時にリセットされるため、関連する結果を得るには、アプリケーションを実行し、すべての機能を徹底的にテストする必要があることに注意してください。last_user_scanlast_user_lookup

ストアド プロシージャの場合は、SP:Startingイベントを監視するサーバー トレースを開始する必要があります。製品のすべての機能を再度実行するテストを実行した後、トレースを停止し、SQL 集計関数を使用しTextDataて、トレース ファイル内のプロシージャ名の個別の出現回数をカウントします。でトレースを読み取りますfn_trace_gettable

于 2009-08-03T14:11:04.227 に答える
0

SQL プロファイラーが私の提案ですが、トレースを実行しているときにパフォーマンスのオーバーヘッドが発生するため、その実行には注意が必要です。

于 2009-08-03T08:59:09.260 に答える