ユーティリティ オブジェクト スクリプトを使用して SQL Server の取り込みを準備する
LakeFlow Connect使用してDatabricksに取り込むSQL Serverデータベースのセットアップ タスクを完了します。
要件
- スクリプトを実行するユーザーは、 
db_ownerロールのメンバーである必要があります。 - CT セットアップの場合: プラットフォーム上で変更追跡が利用可能である必要があります。
 - CDCセットアップの場合: プラットフォームで変更データ キャプチャが利用可能である必要があります。
 
ステップ 1: ユーティリティ オブジェクトをインストールする
このステップでは、 SQL Serverセットアップに必要なユーティリティ ストアド プロシージャと関数をインストールします。 インストールされる内容の詳細については、 「SQL Server ユーティリティ オブジェクト スクリプト リファレンス」を参照してください。
- 
スクリプトをダウンロード: utility_script.sql
 - 
SQL Server Management Studio (SSMS)、Azure Data Studio、またはお好みの SQL クライアントでスクリプトを開きます。
 - 
db_ownerロールを持つユーザーとして SQL Server インスタンスに接続します。 - 
ターゲット データベースに接続していることを確認してください。
 - 
スクリプトを実行します。
 - 
インストールを確認します。
SQLSELECT dbo.lakeflowUtilityVersion_1_1() AS UtilityVersion;
SELECT dbo.lakeflowDetectPlatform() AS Platform; 
ステップ 2: 変更追跡を有効にする (主キーを持つテーブルの場合)
変更追跡は、テーブル行の変更を追跡する軽量のメカニズムです。このステップでは、指定されたテーブルに対してデータベース レベルで CT を有効にし、スキーマの変更を処理するための DDL サポート オブジェクトを設定します。 詳細については、 SQL Server ユーティリティ オブジェクト スクリプト リファレンスのlakeflowSetupChangeTrackingを参照してください。
-- Enable change tracking on specific tables
EXEC dbo.lakeflowSetupChangeTracking
    @Tables = 'Sales.Orders,Production.Products,HR.Employees',
    @User = 'your_ingestion_user',
    @Retention = '2 DAYS';
代替オプション:
- 主キーを持つすべてのテーブルの場合: 
@Tables = 'ALL' - 特定のスキーマの場合: 
@Tables = 'SCHEMAS:Sales,HR,Production' - データベース レベルのセットアップのみ (テーブルの有効化なし): 
@Tables = NULL 
ステップ 3: 変更データキャプチャを有効にする (主キーのないテーブルの場合)
CDC は挿入、更新、削除のアクティビティをキャプチャし、主キーのないテーブルに特に役立ちます。このステップでは、データベース レベルでCDC有効にし、キャプチャ インスタンス管理を設定し、自動スキーマ変更処理のトリガーを作成します。 詳細については、 SQL Server ユーティリティ オブジェクト スクリプト リファレンスのlakeflowSetupChangeDataCaptureを参照してください。
-- Enable CDC on specific tables (particularly those without primary keys)
EXEC dbo.lakeflowSetupChangeDataCapture
    @Tables = 'Staging.ImportData,Logs.AuditTrail',
    @User = 'your_ingestion_user';
代替オプション:
- すべてのテーブルについて: 
@Tables = 'ALL' - 特定のスキーマの場合: 
@Tables = 'SCHEMAS:Sales,HR' - データベース レベルのセットアップのみ: 
@Tables = NULL 
変更追跡または CDC のいずれかを使用することも、両方を使用することもできます。Databricks包括的なカバレッジを実現するために、主キーのあるテーブル (ステップ 2) には変更追跡を使用し、主キーのないテーブル (ステップ 3) にはCDC使用することをお勧めします。
ステップ 4: 追加のアクセス許可を付与します (必要な場合)
このステップにより、取り込みユーザーに必要なシステムおよびテーブルレベルの権限が付与されます。 ステップ 2 と 3 は CT および CDC 固有の権限を付与しますが、このステップにより、ユーザーが必要なすべてのSELECT権限を持っていることが保証されます。 詳細については、 SQL Server ユーティリティ オブジェクト スクリプト リファレンスのlakeflowFixPermissions参照してください。
-- Grant system-level and table-level permissions
EXEC dbo.lakeflowFixPermissions
    @User = 'your_ingestion_user',
    @Tables = 'Sales.Orders,Production.Products,HR.Employees';
代替オプション:
- すべてのテーブルについて: 
@Tables = 'ALL' - システム権限のみ: 
@Tables = NULL - 特定のスキーマ: 
@Tables = 'SCHEMAS:Sales,HR' 
ステップ 2 および 3 のセットアップ手順では、必要な CT およびCDC権限が自動的に付与されますが、追加のテーブル レベルのSELECT権限を付与する場合や権限が取り消されている場合は、この手順を実行する必要がある場合があります。
ステップ 5: セットアップを確認する
次のクエリを実行して、データベースとテーブルで変更追跡と CDC が適切に構成されていることを確認します。
-- Check Change Tracking status
SELECT
    d.name AS DatabaseName,
    ctd.is_auto_cleanup_on,
    ctd.retention_period,
    ctd.retention_period_units_desc
FROM sys.change_tracking_databases ctd
INNER JOIN sys.databases d ON ctd.database_id = d.database_id
WHERE d.name = DB_NAME();
-- Check tables with Change Tracking enabled
SELECT
    SCHEMA_NAME(t.schema_id) + '.' + t.name AS TableName,
    ct.is_track_columns_updated_on,
    ct.begin_version,
    ct.cleanup_version
FROM sys.change_tracking_tables ct
INNER JOIN sys.tables t ON ct.object_id = t.object_id;
-- Check CDC status
SELECT
    DB_NAME() AS DatabaseName,
    is_cdc_enabled
FROM sys.databases
WHERE database_id = DB_ID();
-- Check tables with CDC enabled
SELECT
    SCHEMA_NAME(t.schema_id) + '.' + t.name AS TableName,
    ct.capture_instance,
    ct.start_lsn,
    ct.create_date
FROM cdc.change_tables ct
INNER JOIN sys.tables t ON ct.source_object_id = t.object_id;
例: ハイブリッドアプローチ
この例では、簡潔にするために、 'ALL'使用してすべてのテーブルで CT と CDC を有効にします。本番運用で使用する場合は、特定のスキーマまたはテーブルを対象とするこのページの一般的なシナリオを検討してください。
-- Step 1: Already completed (script installed)
-- Step 2 & 3: Enable both CT and CDC
EXEC dbo.lakeflowSetupChangeTracking
    @Tables = 'ALL',
    @User = 'lakeflow_user',
    @Retention = '2 DAYS';
EXEC dbo.lakeflowSetupChangeDataCapture
    @Tables = 'ALL',
    @User = 'lakeflow_user';
-- Step 4: Grant all necessary permissions
EXEC dbo.lakeflowFixPermissions
    @User = 'lakeflow_user',
    @Tables = 'ALL';
一般的なシナリオ
シナリオ 1: 変更追跡のみ (特定のスキーマ)
EXEC dbo.lakeflowSetupChangeTracking
    @Tables = 'SCHEMAS:Sales,Production',
    @User = 'lakeflow_user',
    @Retention = '2 DAYS';
EXEC dbo.lakeflowFixPermissions
    @User = 'lakeflow_user',
    @Tables = 'SCHEMAS:Sales,Production';
シナリオ2: CDCのみ(特定のテーブル)
EXEC dbo.lakeflowSetupChangeDataCapture
    @Tables = 'Staging.ImportData,Logs.AuditTrail,dbo.TempRecords',
    @User = 'lakeflow_user';
EXEC dbo.lakeflowFixPermissions
    @User = 'lakeflow_user',
    @Tables = 'Staging.ImportData,Logs.AuditTrail,dbo.TempRecords';
シナリオ 3: ハイブリッド アプローチ (一部のスキーマには CT、特定のテーブルには CDC)
-- Enable CT on transactional schemas
EXEC dbo.lakeflowSetupChangeTracking
    @Tables = 'SCHEMAS:Sales,HR',
    @User = 'lakeflow_user',
    @Retention = '3 DAYS';
-- Enable CDC on specific staging tables without primary keys
EXEC dbo.lakeflowSetupChangeDataCapture
    @Tables = 'Staging.ImportData,Logs.AuditTrail',
    @User = 'lakeflow_user';
-- Grant permissions on all tables
EXEC dbo.lakeflowFixPermissions
    @User = 'lakeflow_user',
    @Tables = 'ALL';