問題タブ [change-data-capture]
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-server - 変更データ キャプチャ (CDC) のクリーンアップ ジョブは、一度に少数のレコードのみを削除します
私はSQL Serverの初心者です。プロジェクトでは、CDC をオンにする必要があります。cdc データを別の (アーカイブ) データベースにコピーした後、CDC テーブルをすぐに消去できます。したがって、保持時間を長くする必要はありません。1 分に設定しただけで、クリーンアップ ジョブが実行されたとき (保持時間が既に満たされた後)、いくつかのレコード (最も古いレコード) のみが削除されたように見えます。なぜすべてを削除しなかったのですか?まったく削除されない場合もあります。ジョブを数回実行すると、他のレコードが削除されます。保持時間が長いため、これは奇妙に感じます。
保持時間を 1 分 (本当は 0 にしたかったのですが、できませんでした) に設定し、しきい値 (= 5000) は変更しませんでした。特に特定の時間ではなく、CDC レコードがアーカイブ データベースにコピーされた直後にクリーンアップ ジョブを実行するため、スケジュールを無効にしました。
このアイデアに対する私の論理は、たとえば、午後に更新があるというものでした。CDC レコードをアーカイブ データベースにコピーするタスクは、午前 2 時に実行する必要があります。このタスクの後、クリーンアップ ジョブが呼び出されます。そのため、保持期間が最小であるため、すべての CDC レコードをクリーンアップ ジョブで削除する必要があります。結局保存期間過ぎた?
CDC が一般的にどのように使用されるかなど、仕事でスケジュールを再設定するとどうなるかを確認しようとしました。時間が経過した後、CDC テーブルを確認したところ、最も古いレコードのみが削除されていることがわかりました。それで、私は何を間違っていますか?
CDC テーブル内のすべてのレコードを削除するタスクで新しいジョブを作成するという回避策を作成しました (そして、デフォルトの CDC クリーンアップ ジョブ全体を無効にしました)。これはすべてを削除するのでうまく機能しますが、元のクリーンアップ ジョブで作業したいので気になります。希望どおりに動作できるはずだと思います。
ありがとう、
キム
sql - CDC を使用して更新された列リストとデータを見つけるには
CDC を使用して履歴データを含むテーブルを維持するためのセットアップを作成しています。以下は私が書いたスクリプトです:
上記のスクリプトは、データが変更された列の値を返します。以下の出力を探しています。つまり、列 FieldName にはデータが更新される列リストが含まれ、値列には以前の値と新しい値が含まれます。CreatedDate の値が更新前の行の StartDate になり、ModifiedDate が更新前の行の EndDate と更新後の行の StartDate になります。
h2 - Talend MDMサーバーへのSCDの適用
MDMにTalend Open Studioを使用しており、顧客レコードのバージョン管理を行う必要があります。
Oracle データベースを使用している場合、tOracleSCD を使用して変更をキャプチャできます。同様に、MySQL の場合、tMysqlSCD を使用できます。
しかし、Talend Open Studio for MDM でサポートされているデータベースは H2 のみであるため、すべてのマスター レコードを H2 データベースに保存しています。
この場合、H2 データベース用のコンポーネントが Talend で利用できないため、どうすればバージョン管理を実現できますか?
java - データの可用性を判断するためのアルゴリズムを開発する
変更データ キャプチャ ツールを使用して、ほぼリアルタイムでソース データをターゲット データベースに移行しています。課題は、ソースとターゲットの間に存在するデータ移行の待ち時間をできるだけ正確に特定することです。このツールのレイテンシ レポート機能は満足できるものではないため、この特定の指標をより適切に監視するプロセスの開発を任されました。
これを知る必要がある主な理由は 2 つあります。
1: レポートのスケジューリングをサポートするために、正確なデータ可用性マトリックスをユーザーに提供します。たとえば、この情報をできるだけ早く入手したい場合、前日の日次調整レポートをスケジュールする前に、午前 0 時からどのくらいの時間が経過する必要がありますか?
2: データ ミラーリング プロセスの実行速度が通常より遅い (または停止している) 状況を特定します。これにより、調査のためにサポート チームにメールが送信されます。
この一見単純なタスクをどのように行うのが最善かについて、いくつかの一般的なアイデアを探しています
cdc - CDC を使用したデータ取得
削除されたユーザー名を取得するために、CDC テーブル (例: cdc.dbo_testCDC_CT) に新しい列を追加して、ログに記録された SQL ユーザー名を設定しました。すなわち; ALTER TABLE cdc.dbo_testCDC_CT ADD ユーザー名 VARCHAR(20) DEFAULT(SUSER_SNAME()))。その列に入る値は常に「sa」ですが、Windows 認証としてログに記録されます。なぜこのハプニング?
sql-server-2008-r2 - SQL Server 2008 R2 の変更データ キャプチャに関する問題
作業中のデータベースの CDC をアクティブ化した後、キャプチャ ジョブは実際には何もキャプチャできず、次のようなエラーが発生します。
SQL Server は、VMWare 10.x VM 上の SQL Server 2008 R2 SP3 で、8 GB の RAM が割り当てられています。
基本的にデータベースで cdc を有効にしてからテーブルを有効にして、そのテーブルで変更を作成し、キャプチャ ジョブが機能していないことに気付きました。
どんなアドバイスでも大歓迎です!
更新: 問題は最終的に解決されず、MSSQL 2008 R2 を再インストールし、db バックアップを復元し、CDC を有効にして、以前に何が起こったかを知っている魅力的なように機能する必要がありました。
- アル
sql - CDC で変更された列の値を知る方法
SQL 2012 で CDC 機能を使用しており、テーブル名がEmployee
あり、その中にいくつかのレコードがあるとします。Last Name
employee の table で誰かが変更されたとします。次に、CDC
table に 2 つのエントリがあり、変更前と変更後の両方のレコードがあります。どの列が変更されたか知りたいです。
私はこのチュートリアルに従っています
sql - cdc テーブルからデータを削除する
SQL 2008 で CDC を使用しています。クリーンアップ ジョブが実行されるたびに、現在の日付より 1 か月古いデータのみが cdc テーブルから削除されるようにしたいと考えています。これは可能ですか?