2017-01-27 12 views
0

私は多くの更新と挿入があるテーブルを持っています。私の考えは、テーブル内で発生する可能性のあるこのテーブルを修正する手順を1日に1回実行することです。rtrimltrim、タブ、改行などを削除します。特定の場合にのみ監査テーブル

これらの変更を追跡するために、これらのジョブのテーブルID,Original ValueおよびModified Valueにログオンします。

これを行う方法はありますか?

私は他の方法で行った変更を気にせず、とにかくリソースを無駄にしたくありません。

ありがとうございます

+0

プロシージャ自体に、before値とafter値をキャプチャするコードを記述します。また、監査テーブルに挿入します。したがって、この特別な場合にのみ、監査を行います。 –

答えて

1

これにはいくつかの方法があります。この方法では、update queryoutput節を使用して変更を監査します。特別なテーブル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 
+0

私が探していたものとまったく同じです。ありがとうございました! – Antonio

関連する問題