タグ付けされた質問 「change-tracking」

5
SQL Serverテーブルの変更を検出する
私のアプリケーションでは、SQL Server 2012で実行されているDBを使用して、高価なクエリを定期的に実行し、後でアプリケーションがクエリできるテーブルに結果を書き込むジョブ(スケジュールされたタスク)があります。 理想的には、クエリが最後に実行されてから何かが変更された場合にのみ、その高価なクエリを実行したいと思います。ソーステーブルは非常に大きいため、すべての候補列などのチェックサムを選択することはできません。 私は次のアイデアを持っています: ソーステーブルで何かを変更するたびに、最後に変更されたタイムスタンプ、「クエリである必要があります」フラグ、またはこのようなものを追跡テーブルに明示的に書き込みます。 トリガーを使用して同じことを行います。 ただし、書き込みを明示的に追跡せずに、テーブルの変更を簡単に検出する方法があるかどうかを知りたいです。たとえば、ROWVERSIONテーブルなどの「現在」を取得できますか?

2
変更の追跡を含むフルテキストカタログ:そのテーブルの変更追跡が有効になっていない場合、AUTOは自動的に更新されますか?
フルテキストインデックスを最新の状態に保つためのデータベーステーブルがあります。ただし、これが発生しているのはまったくわかりません(最後に表示されたログは手動でトリガーしたときだったため、ログにエラーはありません)。 これが私が見ているものです... テーブルの上に... これが自動的に行われない理由ですか?

1
変更の追跡の内部はSQL Server 2008から2012に変更されましたか?
切断されたデバイスと中央データベースサーバーの同期に関する問題のトラブルシューティングで、サーバーでSQL Server 2012にアップグレードした後に問題が発生しています。CHANGE_TRACKING_MIN_VALID_VERSIONは、本来よりも1大きい(または少なくともアップグレード前の値よりも)高い値を返しているようです。 簡単な例を設定する方法の例として、Arshad Aliのすばらしいウォークスルーの例を使用して作業してきました。 #1から#5までのスクリプトを実行して、SQL Server 2008環境と2012環境の両方で、Employeeテーブルの行を挿入、削除、および更新しました。 2008年、次のステートメントは0を返します。 SELECT CHANGE_TRACKING_MIN_VALID_VERSION(OBJECT_ID('Employee')) 2012年は1を返します。 テストでさらにいくつかのスクリプト(6〜8)を使用して作業する場合は、保持期間を1分に設定して、クリーンアップアクションを強制的に実行できるようにします。私はその日出発し、どうやらそれは一晩走ったようです。 2008年のインスタンスでは、CHANGE_TRACKING_CURRENT_VERSIONとCHANGE_TRACKING_MIN_VALID_VERSIONは等しくなります(11)。2012年のインスタンスでは、CHANGE_TRACKING_MIN_VALID_VERSIONはCHANGE_TRACKING_CURRENT_VERSION(11)よりも1つ高く(12)あります。これは、データベースが長時間アイドル状態のときに同期プロセスに影響を与える可能性があります。そして、特に次のテストを実行して、同期ではなく再初期化が必要かどうかを判断する場合に、プロセスがループに巻き込まれる可能性があることを発見しました。 IF CHANGE_TRACKING_MIN_VALID_VERSION(object_id(N'dbo.Employee')) > @sync_last_received_anchor RAISERROR (N'SQL Server Change Tracking has cleaned up tracking information for table ''%s''... 他の誰かがこの行動の変化を経験しましたか?誰か説明がありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.