1

このアプリケーション用に特別に設定されたログイン資格情報を使用して SQL Server 2008 R2 データベースに接続する (asp.net) アプリケーションがあります。

アプリケーションはストアド プロシージャを介してレコードにアクセス/変更/削除します。ストアド プロシージャには、アクションを実行するユーザーのユーザー名をパラメーターとして渡します。

特定のテーブルのすべての更新と削除の監査ログを保持できる必要があります。また、ソリューションは可能な限り最小限にする必要があり、開発者の介入を必要としません。

私が見つけることができる最も簡単な方法は、「古い」データを履歴テーブル (A_History) にコピーするテーブル (A) にトリガーを置くことです。更新は簡単です。新しく挿入されたレコードのユーザー名を確認するだけです。ただし、削除の場合、ストアド プロシージャに送信されたユーザー名パラメーターにはアクセスできません。

CONTEXT_INFO() のようなものを使用せずにこれを実装する方法はありますか?これは、すべてのストアド プロシージャとすべての呼び出しに追加する必要があり、忘れられるはずです。

4

1 に答える 1

4

SQL変更の追跡が役立つ場合があります。

ここで、おそらく他のいくつかのことを行う必要があります。

  1. レコードを物理的に削除することは避けてください。
  2. アクティブ/削除された列を追加します。
  3. テーブルにModifiedByUserID列とCreatedByUserID列があることを確認してください。
  4. 更新するときは、削除済みなどのマークを付けるために、ModifiedByUserID列を呼び出し元のユーザーIDで更新します。

それらすべてを実装すると、SQLはそれらのレコードのすべてのバージョンを追跡します...誰がそれらを作成したか...誰がそれらを変更したか...誰がそれらを削除済みとしてマークしたか。

于 2011-03-03T02:33:00.067 に答える