Azure Data Factory での変更データ キャプチャ リソースのトラブルシューティング
適用対象: Azure Data Factory Azure Synapse Analytics
ヒント
企業向けのオールインワン分析ソリューション、Microsoft Fabric の Data Factory をお試しください。 Microsoft Fabric は、データ移動からデータ サイエンス、リアルタイム分析、ビジネス インテリジェンス、レポートまで、あらゆるものをカバーしています。 無料で新しい試用版を開始する方法について説明します。
この記事では、Azure Data Factory での変更データ キャプチャ リソースに関する一般的な問題のトラブルシューティング方法についての提案を示します。
問題: SQL ソースでのネイティブ CDC の有効化に関する問題。
SQL のソースでは、ネイティブ SQL CDC が有効なテーブルと時間ベースの増分列を含むテーブルの、2 つのテーブル セットを使用できます。
SQL データベース内の特定のソース テーブルに対してネイティブ CDC を構成するには、次の手順のようにします。
主キーとして ID を使用する次のようなテーブルがあるとします。 主キーがスキーマに存在する場合、supports_net_changes は既定で true に設定されます。 そうでない場合は、クエリ 3 のスクリプトを使ってそれを構成します。
クエリ 1
CREATE TABLE Persons (
ID int,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
Last_login DATETIME,
PRIMARY KEY (ID));
Note
現在、ADF CDC リソースでは、挿入、更新、削除操作の差分変更のみが読み込まれます。
データベース レベルで CDC を有効にするには、次のクエリを実行します。
クエリ 2
EXEC sys.sp_cdc_enable_db
テーブル レベルで CDC を有効にするには、次のクエリを実行します。
クエリ 3
EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo'
, @source_name = N'Persons'
, @role_name = N'cdc_admin'
, @supports_net_changes = 1
, @captured_column_list = N'ID';
問題: CDC リソース構成プロセスでテーブルを選択できない。
SQL ソースに net_changed が有効になっている SQL Server CDC がない場合、または時間ベースの増分列がない場合は、ソース内のテーブルを選択できません。
問題: ウォーム プールからデバッグ クラスターを使用できない。
ウォーム プールからデバッグ クラスターを使用できない。 1 分以上の待ち時間があります。
問題: 削除操作の追跡に関する問題。
現在、CDC リソースでは、次のシンクの種類 (Azure SQL Database と Delta) の削除操作がサポートされています。 これを実現するには、列マッピング ページで、ソースの行がシンクの行と一致するかどうかを判断するために使用できるキー列を選択します。
問題: ターゲット SQL テーブルに ID 列がある場合に CDC リソースが失敗する。
ターゲットのシンク テーブルに ID 列がある場合に CDC の実行で次のエラーが発生します。
"IDENTITY_INSERT が OFF に設定されているときは、テーブル 'TableName' の ID 列に明示的な値を挿入できません。"
次のクエリを実行して、SQL ベースのターゲットに ID 列があるかどうかを確認します。
クエリ 4
SELECT *
FROM sys.identity_columns
WHERE OBJECT_NAME(object_id) = 'TableName'
これを解決するには、ユーザーが次のいずれかの手順に従います。
- データベース レベルで次のクエリを実行し、CDC マッパーを再実行することで、IDENTITY_INSERT を ON に設定します。
クエリ 5
SET IDENTITY_INSERT dbo.TableName ON;
(または)
- ユーザーは、挿入の実行中にマッピングから特定の ID 列を削除できます。
問題: セルフホステッド統合ランタイムの使用で問題が発生した。
現在、セルフホステッド統合ランタイムは CDC リソースではサポートされていません。 オンプレミスのソースに接続する場合、マネージド仮想ネットワークで Azure 統合ランタイムを使用します。