これにはいくつかの方法があります。この方法では、update queryのoutput節を使用して変更を監査します。特別なテーブルinserted and deletedを使用して、古い値と新しい値を取得します。
アップデートを毎日実行する予定の場合は、このテクニックをSSIS jobに埋め込むことができます。 SQL Agentは、あなたのために一定のスケジュールでジョブを実行できます。
サンプルデータ
-- Sample data table.
DECLARE @T TABLE
(
ID INT,
Value VARCHAR(255)
)
;
-- Sample audit table.
DECLARE @T_AUDIT TABLE
(
ID INT,
OldValue VARCHAR(255),
NewValue VARCHAR(255)
)
;
-- Let's add some records to experiment with...
INSERT INTO @T
(
ID,
Value
)
VALUES
(1, ' abc'),
(2, 'def '),
(3, '*** ****') -- Using 4 spaces to represent a tab.
;
更新クエリ
これについては、以下を返します。私はスペースをアンダースコアに置き換えて読みやすくしました。
ID OldValue NewValue
1 _abc abc
2 def_ def
3 ****____**** x
プロシージャ自体に、before値とafter値をキャプチャするコードを記述します。また、監査テーブルに挿入します。したがって、この特別な場合にのみ、監査を行います。 –