0

私はSQL Serverの初心者です。プロジェクトでは、CDC をオンにする必要があります。cdc データを別の (アーカイブ) データベースにコピーした後、CDC テーブルをすぐに消去できます。したがって、保持時間を長くする必要はありません。1 分に設定しただけで、クリーンアップ ジョブが実行されたとき (保持時間が既に満たされた後)、いくつかのレコード (最も古いレコード) のみが削除されたように見えます。なぜすべてを削除しなかったのですか?まったく削除されない場合もあります。ジョブを数回実行すると、他のレコードが削除されます。保持時間が長いため、これは奇妙に感じます。

保持時間を 1 分 (本当は 0 にしたかったのですが、できませんでした) に設定し、しきい値 (= 5000) は変更しませんでした。特に特定の時間ではなく、CDC レコードがアーカイブ データベースにコピーされた直後にクリーンアップ ジョブを実行するため、スケジュールを無効にしました。

このアイデアに対する私の論理は、たとえば、午後に更新があるというものでした。CDC レコードをアーカイブ データベースにコピーするタスクは、午前 2 時に実行する必要があります。このタスクの後、クリーンアップ ジョブが呼び出されます。そのため、保持期間が最小であるため、すべての CDC レコードをクリーンアップ ジョブで削除する必要があります。結局保存期間過ぎた?

CDC が一般的にどのように使用されるかなど、仕事でスケジュールを再設定するとどうなるかを確認しようとしました。時間が経過した後、CDC テーブルを確認したところ、最も古いレコードのみが削除されていることがわかりました。それで、私は何を間違っていますか?

CDC テーブル内のすべてのレコードを削除するタスクで新しいジョブを作成するという回避策を作成しました (そして、デフォルトの CDC クリーンアップ ジョブ全体を無効にしました)。これはすべてを削除するのでうまく機能しますが、元のクリーンアップ ジョブで作業したいので気になります。希望どおりに動作できるはずだと思います。

ありがとう、

キム

4

1 に答える 1