SQL Server 接続のトラブルシューティング

プレビュー

LakeFlow Connect はゲート付きパブリック プレビュー段階です。 プレビューに参加するには、Databricks アカウント チームにお問い合わせください。

注:

SQL Server コネクタは、Azure SQL Database と Amazon RDS for SQL Server をサポートします。

一般的なトラブルシューティング ステップ

パイプラインが失敗した場合は、失敗したステップをクリックし、エラー メッセージまたはコードにエラーの性質に関する十分な情報が提供されているかどうかを確認します。

パイプライン失敗エラーメッセージ

パイプラインの詳細ページからクラスター ログを確認することもできます。 ログをスキャンしてエラーまたは例外を探します。 また、ログファイルをローカルにダウンロードして、より詳細な検査を行うこともできます。

パイプライン更新の詳細

データベースまたはテーブルで CDC が有効になっているかどうかを確認する

データベース<database-name>で CDC が有効になっているかどうかを確認するには:

select is_cdc_enabled from sys.databases where name='<database-name>';

テーブル<schema-name>.<table-name>で CDC が有効になっているかどうかを確認するには:

select t.is_tracked_by_cdc
from sys.tables t join sys.schemas s on t.schema_id = s.schema_id
where s.name='<schema-name>' and t.name='<table-name>';

変更追跡がデータベースまたはテーブルに対して有効になっているかどうかを確認する

データベースの <database-name>' で変更追跡が有効になっているかどうかを確認するには:

select ctdb.*

from sys.change_tracking_databases ctdb join sys.databases db

    on db.database_id  = ctdb.database_id

where db.name = '<MyDatabaseName>'

テーブル <schema-name>.<table-name>の変更追跡が有効になっているかどうかを確認するには:

select s.name schema_name, t.name table_name, ct.*

from sys.change_tracking_tables ct join sys.tables t

    on ct.object_id = t.object_id

    join sys.schemas s on t.schema_id = s.schema_id

where s.name = '<MySchemaName>' and t.name = '<MyTableName>'

テーブルトークンの待機中にタイムアウト

ゲートウェイから情報が提供されるのを待機している間に、取り込みパイプラインがタイムアウトする可能性があります。 これは、次の理由が考えられます。

  • 古いバージョンのゲートウェイを実行しています。

  • 必要な情報を生成する際にエラーが発生しました。 ゲートウェイ ドライバーのログでエラーを確認します。

デフォルト認証: デフォルトの資格情報を設定できません

このエラーが表示された場合は、現在のユーザー資格情報の検出に問題があります。 次のものを置き換えてみてください。

w = WorkspaceClient()

で:

w = WorkspaceClient(host=input('Databricks Workspace URL: '), token=input('Token: '))

Databricks SDK for Python ドキュメントの「認証」を参照してください。

tech.replicant.common.ExtractorException: com.microsoft.sqlserver.JDBC.SQLServerException: 列名 'SERIAL_NUMBER' が無効です。

このエラーは、古いバージョンの内部テーブルを使用している場合に表示されることがあります。 接続されたデータベースで以下を実行します。

drop table dbo.replicate_io_audit_ddl_trigger_1;

PERMISSION_DENIED: クラスターを作成する権限がありません。 管理者に問い合わせてください。

Unrestricted cluster creation権限を付与するには、Databricks アカウント管理者に問い合わせてください。

DLTエラーコード: INGESTION_GATEWAY_INTERNAL_ERROR

ドライバー ログの stdout ファイルを確認します。

org.apache.spark.sql.catalyst.ExtendedAnalysisException (英語)

エラーメッセージ:

Ingestion pipeline error: “org.apache.spark.sql.catalyst.ExtendedAnalysisException: Cannot have multiple queries named `XYZ_snapshot_load` for `XYZ`. Additional queries on that table must be named. Note that unnamed queries default to the same name as the table.

問題:これは、同じ取り込みパイプラインによって同じ宛先スキーマに取り込まれている異なるソース スキーマ内のXYZという名前の複数のソース テーブルが原因で名前の競合が発生していることを示します。

解決策:複数のゲートウェイと取り込みパイプラインのペアを作成し、これらの競合するテーブルを異なる宛先スキーマに書き込みます。

互換性のないスキーマの変更

互換性のないスキーマ変更により、取り込みパイプラインがINCOMPATIBLE_SCHEMA_CHANGEエラーで失敗します。 レプリケーションを続行するには、影響を受けるテーブルの完全な更新をトリガーします。

注:

Databricks では、互換性のないスキーマ変更のために取り込みパイプラインが失敗した時点で、スキーマ変更前のすべての行が取り込まれていることを保証できません。