メインコンテンツまでスキップ

Microsoft SQL Server で組み込みの CDC を有効にする

備考

プレビュー

Microsoft SQL Server コネクタは パブリック プレビュー段階です。

このページでは、 で組み込み チェンジデータキャプチャ ()CDC MicrosoftSQL Serverを有効にする手順を説明します。SQL Server コネクタを使用するには、変更の追跡または CDC を有効にする必要があります。Databricks では、ソース データベースの負荷を最小限に抑えるために、主キーを持つすべてのテーブルに対して変更追跡を使用することをお勧めします。変更の追跡と CDC の両方が有効になっている場合、コネクタは変更の追跡を使用します。選択するオプションのガイダンスについては、「 変更の追跡とチェンジデータキャプチャ」を参照してください。

ソース データベースの組み込み CDC を有効にする

  1. CDCを有効にするデータベースにログインします。

  2. データベース コンテキストで次の T-SQL コマンドを実行します。

    Azure SQL Database とオンプレミス SQL Server

    SQL
    EXEC sys.sp_cdc_enable_db

    SQL Server の Amazon RDS

    SQL
    EXEC msdb.dbo.rds_cdc_enable_db '<database-name>'

詳細については、ドキュメントの「 データベースのチェンジデータキャプチャを有効にする SQL Server」を参照してください。

ソース テーブルで組み込み CDC を有効にする

ソース テーブルで CDC を有効にするには、Azure SQL で次のストアド プロシージャを実行します。source_schemasource_namerole_nameの値を置き換えます。@support_net_changes は、テーブルにプライマリキーがある場合にのみ、値 1 をサポートします。

  • source_schemasource_namerole_nameの値を置き換えます。
  • テーブルにプライマリキーがある場合、 @support_net_changes1の値のみをサポートします。
SQL
EXEC sys.sp_cdc_enable_table
@source_schema = N'MySchema',
@source_name = N'MyTable',
@role_name = NULL,
@supports_net_changes = 1

詳細については、ドキュメントの「 テーブルのチェンジデータキャプチャを有効にする SQL Server」を参照してください。

CDC スキーマの許可SELECT

ソース設定で説明されている権限に加えて、データベース・ユーザーにはスキーマcdcに対するSELECT権限が必要です。このスキーマには、CDC が有効になったときに作成される変更テーブルが含まれています。次の T-SQL コマンドを実行します。

SQL
GRANT SELECT ON SCHEMA::cdc to <database-user>;

Grant VIEW SERVER STATE (オンプレミスおよび RDS)

オンプレミスインスタンスと RDS インスタンスの場合のみ、SQL Server エージェントのステータスを確認するために使用される sys.dm_server_servicesのクエリには VIEW SERVER STATE 権限が必要です。次の T-SQL コマンドを実行します。

SQL
GRANT VIEW SERVER STATE to <database-user>

DDL キャプチャとスキーマの進化を設定する

SQL Server コネクタは、レプリケートされたデータベース オブジェクトのデータ定義言語 (DDL) を追跡し、関連するテーブル スキーマの変更を宛先テーブルに適用したり、フル スキーマ レプリケーションの場合は新しいテーブルを追加したりできます。

DDL キャプチャでは、内部テーブル、ストアド プロシージャ、トリガーなどのデータベース オブジェクトの追加セットアップが必要です。この記事 (ddl_support_objects.sql) で提供する Transact-SQL (T-SQL) スクリプトは、既存の DDL サポート オブジェクトを削除し、データベースで発生する DDL の変更をキャプチャするために必要な DDL サポート オブジェクトを作成します。

  1. ddl_support_objects.sqlスクリプトをダウンロードします。

  2. スクリプトを変更して、 mode 値を設定します。

    • BOTH: CT オブジェクトと CDC オブジェクトの両方を初期化します (デフォルト)
    • CT: CT オブジェクトを初期化します
    • CDC: CDC オブジェクトを初期化します
    • NONE: 既存の CT オブジェクトと CDC オブジェクトをすべて削除します
  3. (推奨)必要に応じて、スクリプトを変更して、 replicationUser 変数を SQL Server データベース ユーザーに設定します。

    replicationUser が定義されている場合、スクリプトは DDL サポート オブジェクトを操作するために必要なすべての特権をユーザーに付与します。それ以外の場合は、各権限を手動で付与する必要があります。

  4. 取り込む各データベースでスクリプトを実行します。

important

master データベースでスクリプトを実行しないでください。

サードパーティ製のツールでスクリプトを実行する場合は、スクリプト全体を選択してから実行してください。

チェンジデータキャプチャ (CDC) 権限の要件

スクリプトで replicationUser 変数を設定すると、スクリプトは DDL サポートオブジェクトに対する必要な権限をデータベースユーザーに付与します。必要な権限は次のとおりです。

  • VIEW DEFINITION lakeflowDisableOldCaptureInstance_1_1オブジェクト
  • VIEW DEFINITION lakeflowRefreshCaptureInstance_1_1オブジェクト
  • VIEW DEFINITION lakeflowMergeCaptureInstances_1_1オブジェクト
  • VIEW DEFINITION 取り込むデータベース上
  • VIEW DATABASE PERFORMANCE STATE 取り込むデータベース上
  • UPDATE lakeflowCaptureInstanceInfo_1_1オブジェクト
  • EXECUTE dbo スキーマ
  • EXECUTE lakeflowMergeCaptureInstances_1_1オブジェクト
  • EXECUTE lakeflowDisableOldCaptureInstance_1_1オブジェクト
  • EXECUTE lakeflowRefreshCaptureInstance_1_1オブジェクト

スクリプトで replicationUser が設定されていない場合は、CDC に必要な権限を手動で付与する必要があります。これを行うには、次の T-SQL コマンドを <database-user>コマンドに置き換えて実行します。

SQL
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>;

次のステップ

インジェスト パイプラインを作成する