SQL Server で組み込みの CDC を有効にする
プレビュー
LakeFlow Connect はゲート パブリック プレビュー段階です。 プレビューに参加するには、Databricks アカウント チームにお問い合わせください。
この記事では、 で組み込み チェンジデータキャプチャ () を有効にする方法について説明します。CDCSQL ServerDatabricks へのインジェストには、変更追跡または CDC が必要です。 選択するオプションのガイダンスについては、「 変更の追跡とチェンジデータキャプチャ」を参照してください。
ソース データベースの組み込み CDC を有効にする
CDC のソース データベースを有効にするには、Azure SQL で次のストアド プロシージャを実行し、 <database-name>
の値を置き換えます。 CDCを有効にするデータベースにログインする必要があります。
EXEC sys.sp_cdc_enable_db
Amazon RDS for SQL Server のデータベースで CDC を有効にするには、次のコマンドを実行します。
EXEC msdb.dbo.rds_cdc_enable_db '<database-name>'
詳細については、 ドキュメントの「 データベースのチェンジデータキャプチャを有効にする SQL Server」を参照してください。
ソース テーブルで組み込み CDC を有効にする
ソース テーブルで CDC を有効にするには、Azure SQL で次のストアド プロシージャを実行します。
EXEC sys.sp_cdc_enable_table
@source_schema = N'MySchema',
@source_name = N'MyTable',
@role_name = NULL,
@supports_net_changes = 1
source_schema
、source_name
、role_name
の値を置き換えます。@support_net_changes
テーブルにプライマリキーがある場合にのみ、1
の値をサポートします。
詳細については、 ドキュメントの「 テーブルのチェンジデータキャプチャを有効にする SQL Server」を参照してください。
CDC スキーマに対する SELECT の付与
ソース設定で説明されている権限に加えて、データベース・ユーザーには、CDC が有効になったときに作成される変更テーブルを含むスキーマcdc
に対する SELECT
権限が必要です。
GRANT SELECT ON SCHEMA::cdc to [cdc-username];
DDL キャプチャとスキーマの進化を設定する
SQL Server コネクタは、レプリケートされたデータベース オブジェクトのデータ定義言語 (DDL) を追跡し、関連するテーブル スキーマの変更を宛先テーブルに適用したり、フル スキーマ レプリケーションの場合は新しいテーブルを追加したりできます。
DDL キャプチャを実行するには、追加のデータベース オブジェクトのセットアップが必要です (内部テーブル、ストアド プロシージャ、トリガーなど)。 このセクションで説明する T-SQL スクリプトは、既存の DDL サポート オブジェクトを削除し、データベースで発生する DDL の変更をキャプチャするために必要な DDL サポート オブジェクトを作成します。
DDL キャプチャとスキーマ進化を設定するには、次の操作を行います。
次の T-SQL スクリプトをダウンロードします。
スクリプトを変更して、
mode
値を設定します。BOTH
: CT オブジェクトと CDC オブジェクトの両方を初期化します (デフォルト)CT
: CT オブジェクトを初期化しますCDC
: CDC オブジェクトを初期化しますNONE
: 既存の CT オブジェクトと CDC オブジェクトをすべて削除します
レプリケートするテーブルを含む各データベースでスクリプトを実行します。
追加のユーザー権限を付与する
データベース・ユーザに次の権限を付与します。
GRANT VIEW DEFINITION ON object::dbo.lakeflowDisableOldCaptureInstance_1_1 TO <database-user>;
GRANT VIEW DEFINITION ON object::dbo.lakeflowRefreshCaptureInstance_1_1 TO <database-user>;
GRANT VIEW DEFINITION ON object::dbo.lakeflowMergeCaptureInstances_1_1 TO <database-user>;
GRANT VIEW DEFINITION TO <database-user>;
GRANT VIEW DATABASE PERFORMANCE STATE TO <database-user>;
GRANT UPDATE ON object::dbo.lakeflowCaptureInstanceInfo_1_1 TO <database-user>;
GRANT EXECUTE ON schema :: dbo TO <database-user>;
GRANT EXECUTE ON object::dbo.lakeflowMergeCaptureInstances_1_1 TO <database-user>;
GRANT EXECUTE ON object::dbo.lakeflowDisableOldCaptureInstance_1_1 TO <database-user>;
GRANT EXECUTE ON object::dbo.lakeflowRefreshCaptureInstance_1_1 TO <database-user>;