2008-08-29 12 views
2

私はおそらくアクセスされていない数十のテーブルを持つSQL Server 2000データベースを使用しています。私は、もはや維持する必要のないデータをクリアしたいのですが、削除するテーブルを特定する方法がわかりません。SQL Server 2000で未使用のテーブルを識別する戦略?

データベースはいくつかの異なるアプリケーションで共有されていますので、これらを見直すと、使用されているオブジェクトの完全なリストが得られます。

可能であれば、ある期間アクセスされていないテーブルのリストを取得することです。読み取りも書き込みもありません。私はこれにどのようにアプローチすべきですか?

答えて

5

MSSQL2000では、このような情報は提供されません。しかし、どのテーブルが使用されているかを特定して(どのデータベースが使用されていないかを推測する)方法は、SQLプロファイラを使用して、特定のデータベースに送られるすべてのクエリを保存することです。結果を新しいテーブルに記録するようにプロファイラを設定し、そこに保存されているクエリを確認して、アプリケーションで使用されているすべてのテーブル(およびビュー、SPなど)を検索します。

「書き込み」があるかどうかを確認する別の方法は、すべてのテーブルに新しいタイムスタンプ列を追加し、更新または挿入があるたびにその列を更新するトリガーを追加することです。しかし、あなたのアプリがタイプ

select * from ... 

のクエリを実行するならば、彼らは新しい列を受け取り、それはあなたにいくつかの問題を引き起こす可能性があることに注意してください。

0

最終更新日の列がある場合は、書き込みを確認できますが、実際に読み込みを確認する簡単な方法はありません。あなたは私が通常行うことは、人々がすることにより場合、私はちょうど戻って

0

をその名前を変更悲鳴を開始したとき、underscroreでそれを付けることによって、テーブルの名前を変更され

そこでは、プロファイラを実行して、テーブルにトレースを保存してチェックすることができますあなたのアプリケーションに問題のテーブルへの参照がなく、動的SQLを使用している場合は、存在しない場合はテーブル名を検索することができます。

私はまた、すべてのsprocsや関数などをテキストファイルに出力し、テーブル名を検索しました。発見されない場合、または削除する必要がある手続きで見つかった場合は、それらを吹き飛ばす。

0

ちょうどそれらを削除して、すべてのユーザーがそれについて不平を言うかどうかを確認;)

0

それはプロファイラが仕事に行くされて使用してのように見えます。一度それをしばらく走らせてみると、私は中古のテーブルの良いリストを持っているはずです。自分のテーブルを毎日使っていない人は、おそらくバックアップから復元するのを待つことができます。ありがとう、皆さん。

1

書き込まれたトラッキングテーブルの別の提案は、Red Gate SQL Log Rescue(無料)を使用することです。このツールはデータベースのログに入り込み、すべての挿入、更新、削除を表示します。リストも完全に検索可能です。

データベースへの読み込みの基準を満たしていませんが、SQLプロファイラのテクニックは、これまでのところ、公正なアイデアを得られると思います。

0

おそらく、あまりにも遅すぎると助かりましたが、誰かが検索していました。私は、SQL Serverでこれを実行することによって、私のコードでは、このオブジェクトを使用して、すべてのオブジェクトを検索します:

は、明確な選択「[」+ OBJECT_NAME(ID)+「]」
のsyscomments
テキスト%」などからMY_TABLE_NAME% '

関連する問題