Microsoft SQL Server で変更の追跡を有効にする
プレビュー
Microsoft SQL Server コネクタは パブリック プレビュー段階です。
このページでは、Microsoft SQL Server で変更の追跡を有効にする手順について説明します。コネクタを使用するには、変更の追跡またはチェンジデータキャプチャ ()CDC SQL Serverを有効にする必要があります。Databricks では、ソース データベースの負荷を最小限に抑えるために、主キーを持つすべてのテーブルに対して変更追跡を使用することをお勧めします。変更の追跡と CDC の両方が有効になっている場合、コネクタは変更の追跡を使用します。選択するオプションのガイダンスについては、「 変更の追跡とチェンジデータキャプチャ」を参照してください。
データベースでの変更追跡の有効化
以下を実行し、 <database-name>
を変更追跡を有効にするデータベースの名前に置き換えます。CHANGE_RETENTION
を、ゲートウェイがダウンする可能性がある最大時間に設定します。この時間が経過すると、ゲートウェイを再開するには完全な更新が必要になります。
ALTER DATABASE <database-name> SET CHANGE_TRACKING = ON (CHANGE_RETENTION = 3 DAYS, AUTO_CLEANUP = ON)
テーブルで変更の追跡を有効にする
以下を実行し、 <schema-name>.<table-name>
を変更追跡を有効にするスキーマとテーブルの名前に置き換えます。
ALTER TABLE <schema-name>.<table-name> ENABLE CHANGE_TRACKING
取り込まれたテーブルに対する VIEW CHANGE TRACKING の付与
ソース設定で説明されている権限に加えて、データベースユーザーには、取り込まれたテーブルまたは追跡対象のテーブルを含むスキーマに対するVIEW CHANGE TRACKING
権限が必要です。
スキーマレベルの権限を付与するには、次のコマンドを実行します。
GRANT VIEW CHANGE TRACKING ON SCHEMA::<schema-name> TO <database-user>;
テーブルレベルのパーミッションを付与するには、次のコマンドを実行します。
GRANT VIEW CHANGE TRACKING ON OBJECT::<schema-name>.<table-name> 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 データベースでスクリプトを実行しないでください。
サードパーティ製のツールでスクリプトを実行する場合は、スクリプト全体を選択してから実行してください。
変更追跡の権限要件
スクリプトで replicationUser
変数を設定すると、スクリプトは DDL サポートオブジェクトに対する必要な権限をデータベースユーザーに付与します。必要な権限は次のとおりです。
VIEW CHANGE TRACKING
lakeflowDdlAudit_1_1
オブジェクトVIEW DEFINITION
取り込むデータベース上
スクリプトで replicationUser
が設定されていない場合は、変更追跡に必要な権限を手動で付与する必要があります。これを行うには、次の T-SQL コマンドを <database-user>
コマンドに置き換えて実行します。
GRANT VIEW CHANGE TRACKING ON OBJECT::dbo.lakeflowDdlAudit_1_1 TO <database-user>;
GRANT VIEW DEFINITION ON DATABASE::<database-name> TO <database-user>;