Microsoft SQL Server で組み込みの CDC を有効にする
プレビュー
Microsoft SQL Server コネクタは パブリック プレビュー段階です。
このページでは、 で組み込み チェンジデータキャプチャ ()CDC MicrosoftSQL Serverを有効にする手順を説明します。SQL Server コネクタを使用するには、変更の追跡または CDC を有効にする必要があります。Databricks では、ソース データベースの負荷を最小限に抑えるために、主キーを持つすべてのテーブルに対して変更追跡を使用することをお勧めします。変更の追跡と CDC の両方が有効になっている場合、コネクタは変更の追跡を使用します。選択するオプションのガイダンスについては、「 変更の追跡とチェンジデータキャプチャ」を参照してください。
ソース データベースの組み込み CDC を有効にする
-
CDCを有効にするデータベースにログインします。
-
データベース コンテキストで次の T-SQL コマンドを実行します。
Azure SQL Database とオンプレミス SQL Server
SQLEXEC sys.sp_cdc_enable_db
SQL Server の Amazon RDS
SQLEXEC msdb.dbo.rds_cdc_enable_db '<database-name>'
詳細については、ドキュメントの「 データベースのチェンジデータキャプチャを有効にする SQL Server」を参照してください。
ソース テーブルで組み込み CDC を有効にする
ソース テーブルで CDC を有効にするには、Azure SQL で次のストアド プロシージャを実行します。source_schema
、 source_name
、 role_name
の値を置き換えます。@support_net_changes
は、テーブルにプライマリキーがある場合にのみ、値 1
をサポートします。
source_schema
、source_name
、role_name
の値を置き換えます。- テーブルにプライマリキーがある場合、
@support_net_changes
は1
の値のみをサポートします。
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 コマンドを実行します。
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 コマンドを実行します。
GRANT VIEW SERVER STATE to <database-user>
DDL キャプチャとスキーマの進化を設定する
SQL Server コネクタは、レプリケートされたデータベース オブジェクトのデータ定義言語 (DDL) を追跡し、関連するテーブル スキーマの変更を宛先テーブルに適用したり、フル スキーマ レプリケーションの場合は新しいテーブルを追加したりできます。
DDL キャプチャでは、内部テーブル、ストアド プロシージャ、トリガーなどのデータベース オブジェクトの追加セットアップが必要です。この記事 (ddl_support_objects.sql
) で提供する Transact-SQL (T-SQL) スクリプトは、既存の DDL サポート オブジェクトを削除し、データベースで発生する DDL の変更をキャプチャするために必要な DDL サポート オブジェクトを作成します。
-
ddl_support_objects.sqlスクリプトをダウンロードします。
-
スクリプトを変更して、
mode
値を設定します。BOTH
: CT オブジェクトと CDC オブジェクトの両方を初期化します (デフォルト)CT
: CT オブジェクトを初期化しますCDC
: CDC オブジェクトを初期化しますNONE
: 既存の CT オブジェクトと CDC オブジェクトをすべて削除します
-
(推奨)必要に応じて、スクリプトを変更して、
replicationUser
変数を SQL Server データベース ユーザーに設定します。replicationUser
が定義されている場合、スクリプトは DDL サポート オブジェクトを操作するために必要なすべての特権をユーザーに付与します。それ以外の場合は、各権限を手動で付与する必要があります。 -
取り込む各データベースでスクリプトを実行します。
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>
コマンドに置き換えて実行します。
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>;