0

SQL Server テーブルに次の列を作成しました。

Log_id
Old_value
New_value
Module [The module for the transaction]
Reference_id [unique id of the record from respective tbl to associate with transaction history]
Transaction [The type of transaction. Can include, INSERT, UPDATE or DELETE]
Transaction_status [Indicates SUCCESS or FAILURE]
Stack_trace [The detailed stack trace of the error]
Modified_on
Modified_by

挿入、更新、または削除が発生するたびに、関連データを上記の監査テーブルに挿入するための最良かつ効率的な方法は何でしょうか。

ご意見をお聞かせください。ありがとう。

4

2 に答える 2

0

最適な効率は、データベースの負荷 (更新の数、大きさ)、データをどうするかなど、多くのことに依存します。

ただし、それを行う 1 つの方法は、トリガーを使用することです: トリガー を使用した監査証跡の追加に関するブログMSDN ドキュメント

于 2012-05-30T10:19:18.673 に答える
0

トリガーは、Modifed_by に問題がある可能性があります。これは ASP.NET であるため、SQL への単一の接続である可能性が高く、ASP のみが Modified_by を認識します。

ログのすべての情報がすでに SQL にある場合は、トリガーします。

ログにまだ SQL にない情報が必要な場合、最善と効率は同じではありません。

ストアド プロシージャを介した 2 つの独立したステートメントが最も効率的です。

ただし、データの整合性のために、トランザクションで 2 つのステートメントをラップして、1 つの単位として成功または失敗するようにします。オーバーヘッドはほとんどありません。再びストアドプロシージャで。または、コード ビハインドで TSQL とトランザクションを使用できますが、ストアド プロシージャの方が高速で安全です。

ログのインデックスも見てください。インデックスが少ないほど、挿入が速くなります。ログは、選択速度よりも挿入速度を最適化したい場所です。

于 2012-05-30T12:41:16.233 に答える