1

現在、SQL Server 2008変更追跡を使用して、すべてのテーブルへの変更を追跡しています。すべてが箱から出して問題なく動作します。ただし、さらに複雑なのは、これらの変更を読み取るアプリケーションが、追跡されている各テーブルの日付列に変更を加える必要があることです。アプリケーションの変更は、追加のデータを送信する必要があることを通知するトリガーのようなものです。これは、管理されていない場合、無限のサイクルを引き起こす可能性があります。

各変更が読み取られた後に入力される送信日があります。

データベース/テーブルレベルで、テーブルの個々の列を無視して、その列が変更されたときにバージョン/変更が追跡されないように構成できますか?

4

1 に答える 1

1

変更追跡を使用する方法は 2 つありますが、どちらも結果をフィルタリングするだけです。列ごとに変更追跡を制限する方法はありません。

1) コンテキストによるフィルタリング

次のリンクは、アプリケーションがデータを変更するときのコンテキストを変更する方法を示しています。変更を行っているものに固有のコンテキストを変更すると、クエリ時にそれによってフィルター処理できます。http://msdn.microsoft.com/en-us/library/cc280462(v=sql.105).aspx

2) 列の更新されたマスクを使用してフィルター処理する

さらに、私はまだ独自の変更追跡を行っていることを認めなければなりません。コードトリガーを自動生成するために実行するスクリプトがあります。それらは、変更されない更新 (つまり、関心のあるフィールドを変更しない行の更新) を防ぐようにカスタマイズできます。さらに、それらを使用すると、物事を完全に制御できます。必要なフィールドを追跡できます。さらに、すべての追跡/デフォルト フィールド (suser_sname() など) を追跡テーブルに移動して、日々のビジネス テーブルをスリムに保つことができます。このオプションに興味がある場合は、そのように返信してください。特定のテーブル名のトリガーと追跡テーブルを自動生成するコードを投稿します。

于 2013-01-16T04:07:03.420 に答える