問題タブ [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.

0 投票する
2 に答える
884 参照

sql-server - SQL CDC データ処理オプション

いくつかのテーブルに SQL Server CDC をセットアップしています。CDC が開始されると、cdc テーブルにデータが入力されます。これらの変更を処理し、変更が発生するたびに MQ メッセージを生成して、外部メッセージ キューに送信したいと考えています。

このデータを処理する最善の方法は何ですか。私は sqdata のようないくつかの製品を見てきましたが、それを行うためのより良い方法があるかどうかを考えていました. Service Broker を使用して CDC を確認しましたが、これにより、外部アプリケーションにのみ送信されるメッセージが生成されます。

もう 1 つの問題は、CDC の変更によってメッセージが生成され、変更データを削除してほしいというメッセージが表示されるため、この処理サービスをスケーリングする場合は、既に処理されたデータを処理しないようにすることです。

0 投票する
4 に答える
2284 参照

sql-server - ログ シーケンス番号 (LSN) は、SQL Server のデータベースまたはテーブルに対して一意ですか?

SQL CDC を使用して、SQL Server の複数のテーブルの変更を追跡しています。各CDCテーブルからデータを収集するプログラムがある場合、これらの変更を正しい順序で報告したいと思います。しかし、これらのテーブルで発生しているすべての変更が正しい順序で報告されるようにしたいと考えています。正しいシーケンスを LSN に頼ることはできますか?

0 投票する
1 に答える
3297 参照

sql-server - cdc.fn_cdc_get_net_changes_ と cdc.fn_cdc_get_all_changes_ の違い

cdc.fn_cdc_get_net_changes_cdc.fn_cdc_get_all_changes_SQL サーバーの違いは何ですか?

助けていただければ幸いです。

0 投票する
5 に答える
4887 参照

sql-server - SQL Server 2012 変更データ キャプチャ エラー 14234

SQL Server 2012 インスタンスでの変更データ キャプチャの設定に問題があります。テーブルで CDC を有効にしようとすると、次のエラーが発生します。

メッセージ 22832、レベル 16、状態 1、プロシージャ sp_cdc_enable_table_internal、行 623
テーブル [dbo] を示すメタデータを更新できませんでした。[TableName] が変更データ キャプチャに対して有効になっています。
コマンド '[sys].[sp_cdc_add_job] @job_type = N'capture'' の実行時にエラーが発生しました。
返されたエラーは 22836 でした: 「データベース [データベース名] のメタデータを更新して、変更データ キャプチャ ジョブが追加されたことを示すことができませんでした。コマンド 'sp_add_jobstep_internal' の実行中にエラーが発生しました。
返されたエラーは 14234 でした:「指定された '@server' は無効です (有効な値は sp_helpserver によって返されます)。」アクションとエラーを使用して失敗の原因を特定し、要求を再送信してください。アクションとエラーを使用して失敗の原因を判別し、要求を再サブミットしてください。

サーバーの名前は変更されていません。/ ソリューションを試したところsp_dropserversp_addserver次のエラーが表示されました。

メッセージ 15015、レベル 16、状態 1、プロシージャ sp_dropserver、行 42
サーバー 'ServerName' が存在しません。使用可能なサーバーを表示するには、sp_helpserver を使用します。

メッセージ 15028、レベル 16、状態 1、プロシージャ sp_addserver、行 74
サーバー 'ServerName' は既に存在します。

前述したように、レプリケーションではなく CDC をセットアップしようとしています。SQL Server のバージョン: 11.0.5058.0 (SQL Server 2012 SP2)

テーブルレベルでCDCを有効にしているときにエラーを確認し、その解決策を試しました。

私も試しました:

次のエラーが表示されます。

メッセージ 22836、レベル 16、状態 1、プロシージャ sp_cdc_add_job_internal、行 282
データベース [DatabaseName] のメタデータを更新して、変更データ キャプチャ ジョブが追加されたことを示すことができませんでした。コマンド 'sp_add_jobstep_internal' の実行中にエラーが発生しました。
返されたエラーは 14234 でした:「指定された '@server' は無効です (有効な値は sp_helpserver によって返されます)。」アクションとエラーを使用して失敗の原因を判別し、要求を再サブミットしてください。

どんな助けでも大歓迎です。

0 投票する
1 に答える
224 参照

sql - SQL Server 変更データ キャプチャ - トランザクションごとにログ エントリを分離する方法は?

SQL Server の変更データ キャプチャ機能を使い始めたばかりです。どのトランザクションに含まれていたかに基づいて、変更テーブルからエントリを選択できるようにしたいと考えています。これを行う方法はありますか?これらのテーブルのトランザクション ID フィールドは、意味のあるものに対応していないようです。

LSN があり、一般的な開始時間と終了時間を調べることができることは理解していますが、同時に実行され、それぞれが異なるレコードに影響を与える複数のトランザクションを説明することは可能ですか? (異なる操作の開始時刻と終了時刻がインターリーブされる可能性があります)

0 投票する
1 に答える
51 参照

sql-server - SQL Server 2012 オンライン データベースの変更されたレコードをアプリケーションに送信する

2 人のプレーヤーがオンラインで一緒にプレイできるオンライン ゲーム (チェスなど) をプログラミングしています。各プレーヤーは、ゲーム アプリケーション (C# で開発) をコンピューターにインストールしておく必要があります。プレイヤーが何らかのアクションを行うと、インターネット上に配置されたデータベース (SQL Server 2012) のレコードが変更されます。私のニーズ:このオンライン データベースのレコードが変更されると、レコード全体が両方のプレイヤーのゲーム アプリケーションにすぐに送信されます。 ありがとう。

0 投票する
2 に答える
1851 参照

sql-server - CDC から列を削除する方法 (SQL Server)

以下のコードを使用して、テーブルで CDC を有効にしました。デフォルトでは、すべての列が含まれています。列を指定しながら、テーブルで CDC を有効にする別の方法があります (コードは以下に示されています)。ただし、CDC が既に作成されており、すべての列が含まれていることを考えると、それでは遅すぎます。不要な列を CDC ウォッチ リストから削除するにはどうすればよいですか (メタ データのあらゆる場所を検索しましたが、何も見つかりませんでした)。

0 投票する
2 に答える
1785 参照

sql-server - CDC の保持期間を変更する方法または条件を設定する方法 (SQL Server 2012)

私は SQL Server 2012 環境にいて、テーブルで CDC を有効にしています。つまり、テーブルはデータ ウェアハウスにデータを入力するために使用されます (基本的に、テーブルの内容は別の場所に複製されます)。

ただし、CDC がデフォルト設定の 3 日間で有効になっているため、大量のデータが失われていることに気付きました。NEW /DIFFERENT 保持期間で CDC を有効にするクエリを作成する方法を知っています。しかし、それはタスクではありません。タスクは、現在の CDC 設定を変更できる必要があることです。では、保持期間を変更する方法はありますか?

また、さらに、CDC が期限切れのレコードを完全に削除しないようにする方法はありますか? つまり、レコードがすでに転送/移動されていない限り、CDC がレコードを削除できないようにするフラグを実装する方法はありますか。

どうもありがとうございました!