2009-03-02 20 views
0

私は、XMLデータをデータベースに保存したいくつかのアプリケーションを開発しました。これまでのところ、すべての人が新しいXMLコンテンツで現在のXMLコンテンツを単純に上書きしていました。SQL Server 2008のXMLフィールドに変更履歴を保存する

XMLへの変更をデータベースに保存しますが、現在DBにあるものを上書きすることはできません。

変更のための新しい行を作成し、古い行をそのまま残すだけでは、他にどのようなオプションを使用できますか?

私は実際のテキストの違いとして違いを保存することについて考えましたが、これはXMLでは必ずしも機能しません。

これも欲しいですか?

答えて

1

データテーブルの横にある監査テーブルを追加することをお勧めします。

日時の列と共に履歴の追跡に興味のある列だけがあり(変更日を記録するため)、通常はいくつかのユーザー情報も必要です(つまり、ログインしているユーザーを接続から引き出すまたは挿入/更新にユーザー名を入力します)。

次に、データテーブルに更新トリガを作成し、削除された疑似テーブルから監査テーブルに新しい行を挿入します。これは、更新が実際には削除と挿入であるため、更新を実行している場合、更新前のデータを含みます。

離れてあなたが監査したい各データテーブルに一意の監査テーブルとトリガーを実装する抽象化へのSQL CLRを使用することが提案されているこのより汎用的な解決策もあります:http://www.sqljunkies.ddj.com/Article/4CD01686-5178-490C-A90A-5AEEF5E35915.scuk

+0

私は本当に使いたくありません監査テーブル。私は、Subversionがファイルの違いをどのように保っているかについてもっと考えています。 – darren

関連する問題