2009-03-30 8 views
1

接続文字列のユーザーIDは変数ではなく、プログラムのユーザーID(たとえばGUIDでもかまいません)とは異なります。接続文字列のユーザーIDが静的である場合、ログ削除をどのように監査しますか?ログの削除を監査する最良の方法は何ですか?

挿入/更新/削除の記録に最適な場所は、スルートリガーです。しかし、静的な接続文字列では、誰かが何かを削除するのを記録するのは難しいです。代わりに何がありますか?

答えて

1

SQL Serverでは、CONTEXT_INFOを使用してトリガーに情報を渡すことができます。

私はトリガーを使用する必要があるコード(Webアプリケーションによって呼び出される)でこれを使用します(たとえば、テーブルの複数の書き込みパス)。これは私のロジックをストアドプロシージャに入れることができない場所です。

0

同様の状況があります。私たちのWebアプリケーションは、常に同じデータベースユーザーとして実行されますが、アプリケーションのトラックとコントロールとは異なる論理ユーザーが使用されます。

通常、論理ユーザーIDを各ストアドプロシージャのパラメータとして渡します。削除を追跡するには、一般に行を削除せず、ステータスを削除済みとしてマークし、それに応じてLastChgIDフィールドとLastChgDateフィールドを設定します。監査ログ(すべての変更状態のコピー)を保持する重要なテーブルでは、上記の方法を使用し、トリガーが行を監査テーブルにコピーします.RestChgIDはすでに正しく設定されており、トリガーは心配する必要はありませんIDの取得について

関連する問題