SQL Server 接続のトラブルシューティング
プレビュー
Microsoft SQL Server コネクタは、ゲート パブリック プレビュー段階です。プレビューに参加するには、Databricks アカウント チームにお問い合わせください。
一般的なトラブルシューティングの手順
パイプラインが失敗した場合は、失敗したステップをクリックし、エラー メッセージまたはコードにエラーの性質に関する十分な情報が含まれているかどうかを確認します。
クラスター ログは、パイプラインの詳細ページから確認することもできます。 ログをスキャンして、エラーや例外がないか調べてください。 ログファイルをローカルにダウンロードして、より詳細に調べることもできます。
CDC がデータベースまたはテーブルで有効になっているかどうかを確認する
CDC がデータベース <database-name>
に対して有効になっているかどうかを確認するには:
select is_cdc_enabled from sys.databases where name='<database-name>';
CDC がテーブル <schema-name>.<table-name>
で有効になっているかどうかを確認するには:
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: クラスターを作成する権限がありません。 管理者に問い合わせてください。
Databricks アカウント管理者に連絡して、 Unrestricted cluster creation
アクセス許可を付与してください。
DLTエラーコード:INGESTION_GATEWAY_INTERNAL_ERROR
ドライバー ログの stdout
ファイルを確認します。
org.apache.spark.sql.Catalyst.Extended AnalysisException
エラーメッセージ:
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 では、互換性のないスキーマ変更のためにインジェスト パイプラインが失敗した時点で、スキーマ変更前のすべての行が取り込まれていることを保証できません。