SQL Server 2008のXMLフィールドへの変更履歴の保存
-
03-07-2019 - |
質問
XMLデータをデータベースに保存するいくつかのアプリケーションに取り組んできました。それらをすべて日付するには、単に現在のXMLコンテンツを新しいXMLコンテンツで上書きします。
XMLへの変更をデータベースに保存したいが、現在DBにあるものを上書きしたくない。
変更のために新しい行を作成し、古い行をそのままにする短い方法、他にどのようなオプションを使用できますか?
実際のテキストの差分として差分を保存することを考えましたが、これは常にXMLで機能するとは限りません。
これを望んでさえいらっしゃいますか
解決
データテーブルの横に監査テーブルを追加することを検討できます。
(変更の日付を記録するための)datetime列と共に、履歴の追跡に関心のある列のみがあり、通常はユーザー情報も必要です(つまり、ログインしたユーザーを接続から取得するか、挿入/更新でユーザー名を入力してください)。
次に、データテーブルに更新トリガーを作成し、削除された擬似テーブルから監査テーブルに新しい行を挿入します。更新は実際には削除と挿入であるため、更新を実行している場合、更新前のデータが含まれます。
SQL CLRを使用して、監査する各データテーブルの一意の監査テーブルとトリガーの実装を抽象化することを提案する、より汎用的なソリューションもあります。 http://www.sqljunkies.ddj.com/Article/4CD01686-5178-490C-A90A-5AEEF5E35915.scuk
所属していません StackOverflow