1

長年の開発を経てきたSQLサーバデータベースに基づいたシステムで動作します。データ量は膨大ではありません(数GB)が、複雑な処理(数百のテーブル、何百ものストアドプロシージャ)があります。データベーステーブル、関数、ストアドプロシージャ、ビューなどのログを使用します。

私はもはや使用されていないものを取り除くことから始めたいと思います。毎週、毎月、四半期ごとに1年間のサイクルがあり、1年間は使用されないものもあります。しかし、数ヶ月間使用されていないものが短いリストであれば、まだ有用かどうかを検査で判断することができます。

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

編集:テーブル/ビューと保存されているprocsと関数へのアクセスを確認したいと思います。

+0

データベースサーバーソフトウェアとは何ですか? –

+0

Sql Server 2005/2008。我々は両方を持っています。 –

答えて

0

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

+0

はい、それは私の懸念でした。データベースサーバーに負荷がかかりませんが、 "batchComplete"で1年追跡すると大量のデータが作成される可能性があります。 –

1

これは、特に、ストアドプロシージャを使用した際に求めて同様の質問です: How do I log the frequency and last-used time for a stored procedure?

+0

ああ、そうです。私はそれを見なかった。しかし、私はロギングステートメントですべての格納されたprocsにタグを付けるいくつかのコードを持っています。しかし、私はテーブルとビューのアクセスをログに記録したいと思います。私は挿入/更新/削除のテーブルとビューにロギングトリガを追加することを検討しましたが、私はどのように "選択"アクセスをトラップするのか分かりません。 –

1

あなたがチェックsys.dm_db_index_usage_stats:最後の更新はlast_user_updateカラムに保持され、最後のSELECTはlast_user_seekの一つに保持され、last_user_scanまたはlast_user_lookup。カウンタはSQL Serverの起動時にリセットされるため、アプリケーションを実行し、関連する結果を得るためにすべての機能を徹底的にテストする必要があります。

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

+0

私は動的なビューを忘れていたので、あなたはそれに対して+1を得ることができます。私はそれがかなり正しいことを確信していません。これは_most_を使用してsprocs /テーブル/インデックスを見つけるのに非常に便利ですが、私はそれがすべてのテーブルのすべての使用を見つけるか分からない。私は確信していないので、撮影しないでください! –

+0

それは私が「徹底的なテスト」を意味するものです。テストバッテリーが*製品のすべての*機能を行使すれば、最後に*使用されているすべてのテーブル/インデックス/手順を収集します。現実の世界では、可能な限り、アプリケーションが行うすべてを行使するテストを思い付くことは簡単ではないことを理解しています。 –

関連する問題