1

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

挿入/更新/削除をログに記録するのに最適な場所は、トリガーを使用することです。しかし、静的接続文字列では、誰が何かを削除したかをログに記録するのは困難です。代替手段は何ですか?

4

2 に答える 2

1

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

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

于 2009-03-30T03:39:18.153 に答える
0

同様の状況があります。私たちの Web アプリケーションは常に同じデータベース ユーザーとして実行されますが、アプリケーションが追跡および制御する別の論理ユーザーが使用されます。

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

于 2009-03-30T18:12:05.917 に答える