問題タブ [change-tracking]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - フィールド変更追跡を実装するためのパターン
最近のプロジェクトの1つでは、フィールド変更の追跡を実装する必要がありました。したがって、ユーザーがフィールドの値を変更するたびに、変更を完全に監査できるようにするために変更が記録されました。
FieldChanges
データベースでは、これを次のフィールドを持つ単一のテーブルとして実装しました。
- TableName
- フィールド名
- RecordId
- DateOfChange
- ChangedBy
- IntValue
- TextValue
- DateTimeValue
- BoolValue
オブジェクトへの変更を保存するsprocは、フィールドごとに変更されているかどうかを判断し、変更されている場合はFieldChangesにレコードを挿入します。変更されたフィールドのタイプがである場合は、テーブルのフィールドにint
記録します。IntValue
FieldChanges
これは、任意のID値を持つ任意のテーブルの任意のフィールドについて、FieldChangesテーブルにクエリを実行して変更のリストを取得できることを意味します。
これは非常にうまく機能しますが、少し不器用です。同様の機能を実装した他の誰かがより良いアプローチを提案できますか、そしてなぜ彼らはそれがより良いと思うのですか?
私は本当に興味があるでしょう-ありがとう。
デビッド
sql-server-2008 - 変更データキャプチャまたは変更追跡-従来の監査証跡テーブルと同じですか?
Microsoftのドキュメントの深淵を深く掘り下げる前に、Change DataCaptureとChangeTrackingの経験がある人が、これらの一方または両方を従来の...に置き換えることができるかどうかを知っているかどうかを知りたいと思います。
「トリガーによって挿入された「実際のテーブル」(元のテーブルのすべてのフィールドに加えて、日付/時刻、ユーザーID、およびDMLアクションフィールド)の証跡テーブルのコピーを監査します。」
...データベーステーブルの監査証跡を設定します。ここで、トリガーは監査証跡テーブルにデータを入力します(これはすべて手動の作業です)。
MSDNの概要ドキュメントでは、変更データのキャプチャと変更の追跡について大まかに説明していますが、これらのツールを使用して従来の監査証跡テーブルを置き換えることができることは、私には十分に明確ではなく、明確に述べられていません。とても頻繁に作りました。
変更データキャプチャと変更追跡を使用した経験のある人は、私に多くの時間を節約できますか、または私が適切なツールを探すことに時間を費やしていることを確認できますか?監査証跡の重要な部分は、テーブルのフィールド(INSERT、UPDATE、DELETE)に対するすべての変更を、いつ発生し、誰が実行したかをキャプチャすることです。これらの変更は通常、監査証跡レポートを介して時系列でエンドユーザーに提供されます。別の質問はどれですか...変更データキャプチャまたは変更追跡が解決策です。このデータは通常のテーブルのデータと同じようにクエリできると思いますか?
編集:時間に関係なく、恒久的な監査証跡が必要です。Change Data Captureはトランザクションログに関係していることがわかります。そのため、これは私には有限に聞こえます。
sql-server - SQLServer2008変更追跡の保持期間
SQL Server 2008変更追跡のデフォルトの保持期間(2日)について少し心配しています。
この期間をたとえばに設定するのは良い考えですか。100年後に自動クリーンアップをオフにしますか、それとも将来、ストレージの使用量が多すぎたり、パフォーマンスが低下したりして、私を苦しめますか?誰かがその問題の経験がありますか?
sql-server - Sql Server 2005 でフルテキスト インデックス テーブルに挿入するとパフォーマンスが低下する
フルテキスト インデックスが作成されたテーブルに大量のレコードを挿入しようとしています。変更追跡を に設定しましたauto
。
レコードは、一度に通常約 50,000 の数で、別のテーブルから挿入されます。SQL Server 2008 では、完了までに 5 秒ほどかかります。しかし、2005 年のライブ環境で実行すると、10 分以上かかります。
実行プランを見ると、フルテキスト追跡テーブルのクラスター化インデックスへの挿入が問題になっているようです。主キー列は でuniqueidentifier
割り当てられnewsequentialid()
ます。しかし、2008 年は で 1 回のClustered Index Mergeを行いましたがfulltext_index_docidstatus
、2005 年は で 50,000 回のClustered Index Insertfulltext_index_map
を行いました。
残念ながら、サーバーをアップグレードすることは現時点ではオプションではありません。変更追跡をオフにすると問題は解決しますが、人口を自分で管理するのはうまくいかないので、これは本当にやりたくありません。変更の追跡は、フルテキスト インデックスに表示される新しいレコードを取得するための最速の方法のようであり、優先事項です。
変更追跡を有効にしたまま、これを回避する方法はありますか?
.net - データベースからアプリケーション内のデータを継続的に更新する
データベースのビューから表示されたデータを継続的に更新する必要があるアプリケーションを作成しています。現在、定期的にデータ セット全体をポーリングし、再表示しています。私はそれをより効率的にするために変更しており、これを最も効果的に行う方法について人々の意見に興味があります.
アプリケーションは Windows フォーム アプリケーションであり、DataGridView を使用してデータを表示します。データベース サーバーは SQL Server 2008 です。
SQL Server の変更追跡機能について読んでいて、それが関連するかどうか疑問に思っていますか? 誰かがここでとるべき良いアプローチを提案できますか? 現在選択されている行の状態やスクロール バーの位置に影響を与えずに、アプリケーションで行を挿入、更新、および削除する必要があります。
ありがとう!
.net - ASP.net フォームの変更を確認する
ASP.NET Web ページのフォームに変更があったかどうかを確認したいのですが、オプションは何ですか?
ビューステートが変更されたかどうかを確認する必要がありますか、またはコード ビハインドでフラグを作成する必要がありますか?
.net - SQL Server 2008 データベースでデータ履歴を維持する方法
長い間、履歴が失われないケース管理システムを作成したいと考えていました。変更が加えられたとき、その変更を記録したいのですが、任意の時点に戻って記録がどのように見えるかを確認することができます。スタック オーバーフロー コミュニティにこの質問を投げかけ、これを行う方法を確認したかったのですが、これを実現するためのテクノロジは既に存在しますか?
nhibernate - NHibernateエンティティが更新されたかどうかを判断する方法
外部データに基づいてエンティティの負荷を一括更新するアプリケーションがあります。それらのいくつかは変更されていません。NHibernateは、エンティティが変更されたかどうか、および呼び出したときに更新を送信するかどうかを知るのに十分賢いDbContext.CommitChanges()
です。
しかし、エンティティが更新されたときに画面/ログに出力できるようにしたいです。
更新が実行されたかどうかを確認するにはどうすればよいですか?Nhibernateの変更追跡に接続するにはどうすればよいですか?
python - 大量の変更を追跡するのに適した種類のデータベース
3D ゲーム (Minecraft) 内の変更を追跡するためにデータベースへの書き込みと読み取りを行う Python スクリプトを実装しようとしています。これらの変更はさまざまなクライアントによって行われ、プレイヤー名、座標 (x、y、z)、および説明。大量の変更を保存していますが、これらの変更を保存および取得するための簡単でできれば高速な方法を知りたいです。この仕事に適したデータベースの種類は何ですか?
merge - マージ レプリケーション - 追跡レベルの変更
次の問題があります。テーブル A から選択した列のみをレプリケートしています。このテーブルのレコードを更新するパブリッシャーで実行されるさまざまな更新があります。テーブル A でレプリケートされていない列のみに影響する多くの更新が実行されています。ただし、このような場合、レプリケーション エンジンは、行に変更があったため、これらの行も同期する必要があると判断しました。私の場合、それは不要であり、システムのパフォーマンスに大きな影響を与えています. テーブル A にレプリケートされていない列を追跡変更メカニズムから除外する方法はありますか?
事前にすべての回答をありがとう。ピーター。