トリガーによって挿入される履歴テーブルを作成します(挿入、更新、削除後)。列の20%のみが更新されるので、変更された値のみをログに記録することにしました。値が変更されない場合は、NULL
値が履歴テーブルで使用されます。例えば:
履歴テーブルの列はsparse
になり、すべてのデータをログに記録する通常の実装に比べて、多くのスペースを節約します(これは、私のテストとバスのケースが原因です)。
私はSQL Server 2016 SP1 standard edition
がChange Data Capture
をサポートしているので、それを使用することとトリガーベースのロギングの間に長所/短所/違いがあるのだろうか?
いくつかの記事( ここ と ここ )を確認しましたが、Change Data Capture
がこれ以上何を提供できるかわかりません。
これら2つのことから選択した場合、トリガーを選択する理由は次のとおりです。
@Brent Ozarはトリガーを使用する長所(優れた有効なポイントです)をリストしましたが、情報に基づいた決定を行うために、CDCの長所をいくつか挙げたいと思います。
結局のところ、トリガーとCDCコンテキストの両方で一括データ変更(更新/削除/挿入)などの境界ケースを実行して、パフォーマンスや管理の利便性などの懸念があるかどうかを確認しようと思いますなど、最後の呼び出しを行います。