1

重複の可能性:
特定の Sql Server 2000 データベースでレコードが最後に変更された時刻を特定するにはどうすればよいですか?

私は雇用主から、現在使用されているすべてのデータベースをあるサーバーから別のサーバーに移行し、使用されなくなったすべてのデータベースを「アーカイブ」するように依頼されました。

私が抱えている問題は、どのアプリケーションがサーバー上のどのデータベースを使用しているかについてのドキュメントがほとんどまたはまったくなく、名前スキームにもあまり規則がないことです。残念ながら、ここでは多くのサードパーティ製ソフトウェアを「サポート」していますが、控えめに言っても、物事は厄介です。

私が使用したいアプローチは、過去 1 か月以内にトランザクションが発生したデータベースを移行してから、オフラインにして他のデータベースをバックアップすることです。

私が抱えている問題は、特定のデータベースでのアクティビティを確認する方法がわからないことです。何かが起こっているかどうかを教えてくれるものはありますか?

4

2 に答える 2

1

現在のアクティビティを確認するには、 SQLServerProfilerが優れています。ただし、実行された可能性のあるロギングは別として、これがあなたにできるすべてであると私は恐れています。

ただし、通常、疑わしいデータベースをオフラインに設定すると、問題が発生することがよくあります;-)

于 2012-06-19T16:48:52.223 に答える
1

残念ながら、SQL Server 2000 では、これについてできることはあまりありません。SQL Server は、クエリを実行するだけの便利な方法でこれを独自に追跡しません。サーバー側のトレースを 1 日または 1 週間設定してから、トレースからデータを取得し、database_id でグループ化して、その期間にアクセスされたデータベースを確認できます。

アクセスを遮断し、人々が不平を言うのを待つのは間違った方法です。まず、重要なデータベースへのアクセスを拒否した場合はどうなるでしょうか? 月末にのみアクセスされるデータベースはどうですか? そのデータベースを使用する唯一の人が休暇中の場合はどうなりますか? アクセスを遮断して、すぐに元に戻せるのであれば、これで問題ないかもしれませんが、私はそのアプローチには細心の注意を払っています。

SQL Server 2005 以降では、sys.dm_db_index_usage_stats などの各データベースで DMV をクエリできます。これにより、最後のユーザーがシーク/スキャン/更新したことがわかります。簡単な監査を設定することもできます。私はこれについてここにブログを書きました(今は役に立たないかもしれませんが)。

于 2012-06-19T16:51:50.287 に答える