2011-06-27 1 views
1

データベース内のテーブルの1つに、バックアップデータベース内の行を示す前回のdbのバックアップ以降に行が欠落しています。Sql Serverの特定のテーブルで実行されたすべてのクエリを表示

私は任意の助けをいただければ幸いです

(私は最後のバックアップを作成した時間である)、最後の3日間で、そのテーブルに対して走ったすべてのクエリを表示しようとしています。おかげさまで

答えて

1

これは、誰が行動を取ったかを示すために作成することができます。また、事前にクエリを記録する方法を設定する必要があります(Profilerを使用することはできますが、それを実行するためにはかなりのパフォーマンスが必要です。また、dbasを​​使用することで運用データベースで使用できるようになります)。本当にそれを望んでいましたが、誰がその行動をとったのか(あるいは私たちがデータベースに当たっている多くのアプリケーションがあるのか​​)、いつデータの問題を追跡する必要があるのか​​を知っています。監査を事前に設定していない場合は、必要な答えを得ることは難しいです。一部のサードパーティのログアナライザ(コストがかかる)は、データを再作成できるかもしれませんが、依然として誰がやったのか、クエリが何であるのかはわかりません。なぜ3日ごとにバックアップを取っているのですか?

行が欠落している(つまり、まだ存在しているはずです)誰かによって正しく削除されていないことをどのように知っていますか?三日前とのデータの違いがあるため、問題はありません。これらがユーザによって変更されるべきでない値である場合、それらはなぜそれらを変更する権利を持っていますか?おそらく、あなたのセキュリティ・モデルと同様に、バック・プロセスを再評価する必要があります。

今のところあなたは変更がどのように行われたかを知ることができません。これをインセンティブとして使用して、あなたのデータベースがどのようなチェックや残高を必要としているのかを調査し、将来、データの問題の原因を突き止めたり、発生を防ぐことができます。そして、あなたが言うものが正しい値であるというバックアップを持っているので(第2項を参照)、データを修正してください。

+0

私たちは定期的なバックアップを取って、私たちの開発マシンで復元します。数日前に私は問題の兆候であったコアテーブルの1つに行の不一致があることを発見しました。私は一見して、1つの重要な製品レコードがなかった。それは修正されました。また、どのようになったのかをほぼ把握しましたが、このような状況では、クエリがサーバーに対して実行されたことを知ることも有益です。しかし、ええ、監査テーブルは良いアイデアです! –

+0

Nah!ジョブが実行され、実行されるべきではない条件が実行されたときに実際に発生しましたが、ユーザーによって設定された条件(正当なユーザー)を再度確認します。しかし、それは人為的ミスのようだった。しかし、答えに感謝します。これは、監査テーブルを設定して調べるべきものです。 –

0

残念ながら、未処理のクエリのログを設定する必要がありました。これはインターネット上で(プロファイラーなどのトレースを介して)たくさんの解決策があります。すべてのログはDBMSのLOGファイルに永久的に書き込まれますが、トランザクショナルなIO目的のためには、それらがハードドライブにロールバックされると、クエリ自体がログを残します。 SQLエージェントエラーログには、チェックアウトしたいデータが含まれている可能性があります。これは、オブジェクトエクスプローラである - > SQL Serverエージェント - >エラーログ

3

あなたは、クエリがキャッシュされているかどうかを確認することができ、それはロングショットだ:データベースは、監査テーブルを必要とする理由

SELECT sql FROM sys.syscacheobjects where sql like '%TableName%' 
関連する問題