Azure Data Factory および Azure Synapse の Azure Synapse Analytics、Azure SQL Database、SQL Server、Azure SQL Managed Instance、および Amazon RDS for SQL Server コネクタの問題のトラブルシューティング

適用対象: Azure Data Factory Azure Synapse Analytics

ヒント

企業向けのオールインワン分析ソリューション、Microsoft Fabric の Data Factory をお試しください。 Microsoft Fabric は、データ移動からデータ サイエンス、リアルタイム分析、ビジネス インテリジェンス、レポートまで、あらゆるものをカバーしています。 無料で新しい試用版を開始する方法について説明します。

この記事では、Azure Data Factory および Azure Synapse の Azure Synapse Analytics、Azure SQL Database、SQL Server、Azure SQL Managed Instance、および Amazon RDS for SQL Server コネクタの一般的な問題のトラブルシューティングのための提案を示します。

エラー コード:SqlFailedToConnect

  • メッセージ: Cannot connect to SQL Database: '%server;', Database: '%database;', User: '%user;'. Check the linked service configuration is correct, and make sure the SQL Database firewall allows the integration runtime to access.

  • 原因と推奨事項: このエラーはさまざまな原因により発生する可能性があります。 考えられる原因の分析および関連する推奨事項については、以下の一覧を確認してください。

    原因分析 推奨
    Azure SQL では、エラー メッセージに "SqlErrorNumber=47073" という文字列が含まれている場合、接続設定で公衆ネットワーク アクセスが拒否されていることを意味します。 Azure SQL ファイアウォールで、 [Deny public network access](公衆ネットワーク アクセスを拒否する) オプションを [いいえ] に設定します。 詳細については、「Azure SQL の接続の設定」を参照してください。
    Azure SQL の場合、エラー メッセージに "SqlErrorNumber = [エラー コード]" などの SQL エラー コードが含まれている場合は、『Azure SQL DB トラブルシューティング ガイド』を参照してください。 推奨事項については、「Azure SQL Database および Azure SQL Managed Instance の接続に関する問題とその他のエラーのトラブルシューティング」を参照してください。
    ポート 1433 がファイアウォール許可リストに含まれているかどうかを確認します。 詳細については、SQL Server で使用されるポートに関する記事を参照してください。
    エラー メッセージに "SqlException" という文字列が含まれている場合、SQL Database のエラーは、何らかの特定の操作が失敗したことを示します。 詳細については、「データベース エンジンのエラー」の SQL エラー コードを参照してください。 詳細については、Azure SQL サポートにお問い合わせください。
    これが一時的な問題 (不安定なネットワーク接続など) の場合は、アクティビティ ポリシーに再試行を追加して軽減します。 詳細については、パイプラインとアクティビティに関するページを参照してください。
    "Client with IP address '...' is not allowed to access the server" (IP アドレスが '...' のクライアントはサーバーへのアクセスが許可されていません) という文字列がエラー メッセージに含まれており、Azure SQL Database に接続しようとしている場合、通常、このエラーの原因は Azure SQL Database のファイアウォールの問題です。 Azure SQL Server のファイアウォールの構成で、 [Azure サービスおよびリソースにこのサーバーへのアクセスを許可する] オプションを有効にします。 詳細については、Azure SQL Database と Azure Synapse の IP ファイアウォール規則に関するページを参照してください。
    エラー メッセージに Login failed for user '<token-identified principal>' が含まれている場合、このエラーは通常、データベース内のサービス プリンシパル、システム割り当てマネージド ID またはユーザー割り当てマネージド ID (選択した認証の種類によって異なります) に十分なアクセス許可が付与されていないことが原因で発生します。 データベース内のサービス プリンシパル、システム割り当てマネージド ID またはユーザー割り当てマネージド ID に十分なアクセス許可を付与します。

    Azure SQL Database の場合:
        - サービス プリンシパル認証を使用する場合は、「サービス プリンシパル認証」に従います。
        - システム割り当てマネージド ID 認証を使用する場合は、「システム割り当てマネージド ID 認証」に従います。
        - ユーザー割り当てマネージド ID 認証を使用する場合は、「ユーザー割り当てマネージド ID 認証」に従います。
       
    Azure Synapse Analytics の場合:
        - サービス プリンシパル認証を使用する場合は、「サービス プリンシパル認証」に従います。
        - システム割り当てマネージド ID 認証を使用する場合は、「Azure リソースのシステム割り当てマネージド ID 認証」に従います。
        - ユーザー割り当てマネージド ID 認証を使用する場合は、「ユーザー割り当てマネージド ID 認証」に従います。
       
    Azure SQL Managed Instance の場合:
        - サービス プリンシパル認証を使用する場合は、「サービス プリンシパル認証」に従います。
       - システム割り当てマネージド ID 認証を使用する場合は、「システム割り当てマネージド ID 認証」に従います。
       - ユーザー割り当てマネージド ID 認証を使用する場合は、「ユーザー割り当てマネージド ID 認証」に従います。
    Azure SQL Managed Instance の使用時に The server was not found or was not accessible を含むエラー メッセージが表示される場合、このエラーは通常、Azure SQL Managed Instance パブリック エンドポイントを有効にしないことが原因で発生します。 Azure SQL Managed Instance でパブリック エンドポイントを構成する」を参照して、Azure SQL Managed Instance パブリック エンドポイントを有効にしてください。

エラー コード:SqlOperationFailed

  • メッセージ: A database operation failed. Please search error to get more details.

  • 原因と推奨事項: このエラーはさまざまな原因により発生する可能性があります。 考えられる原因の分析および関連する推奨事項については、以下の一覧を確認してください。

    原因分析 推奨
    エラー メッセージに "SqlException" という文字列が含まれている場合、SQL Database により、何らかの特定の操作が失敗したことを示すエラーがスローされます。 SQL エラーが明確でない場合は、データベースを最新の互換性レベル '150' に変更してみてください。 最新バージョンの SQL エラーをスローすることができます。 詳細については、ドキュメントを参照してください。
    SQL の問題のトラブルシューティングの詳細については、「データベース エンジンのエラー」の SQL エラー コードを参照してください。 詳細については、Azure SQL サポートにお問い合わせください。
    エラー メッセージに "PdwManagedToNativeInteropException" という文字列が含まれている場合は、通常、ソースとシンクの列のサイズが一致していないことが原因です。 ソースの列とシンクの列の両方のサイズを確認してください。 詳細については、Azure SQL サポートにお問い合わせください。
    エラー メッセージに "InvalidOperationException" という文字列が含まれている場合は、通常、入力データが無効であることが原因です。 問題が発生している行を特定するには、Copy アクティビティでフォールト トレランス機能を有効にしてください。これにより、問題のある行をストレージにリダイレクトして、さらに調査することができます。 詳細については、コピー アクティビティのフォールト トレランスに関する記事を参照してください。
    エラー メッセージに "実行タイムアウトの期限切れ" が含まれている場合、通常はクエリのタイムアウトが原因です。 ソースの [クエリ タイムアウト] とシンクの [書き込みバッチ タイムアウト] を構成して、タイムアウトを増やします。
    If the error message contains Cannot find the object "dbo.Contoso" because it does not exist or you do not have permissions. when you copy data from hybrid into an on-premises SQL Server table, it's caused by the current SQL account doesn't have sufficient permissions to execute requests issued by .NET SqlBulkCopy.WriteToServer or your table or database does not exist. より特権のある SQL アカウントに切り替えるか、テーブルまたはデータベースが存在する場合はチェックします。

エラー コード:SqlUnauthorizedAccess

  • メッセージ: Cannot connect to '%connectorName;'. Detail Message: '%message;'

  • 原因:資格情報が正しくないか、ログイン アカウントが SQL データベースにアクセスできません。

  • 推奨事項:SQL Database にアクセスするための十分なアクセス許可がログイン アカウントにあることを確認します。

エラー コード:SqlOpenConnectionTimeout

  • メッセージ: Open connection to database timeout after '%timeoutValue;' seconds.

  • 原因:この問題は、SQL Database の一時的な障害である可能性があります。

  • 推奨事項:接続タイムアウトの値を大きくして、リンク サービス接続文字列の更新操作を再試行してください。

エラー コード:SqlAutoCreateTableTypeMapFailed

  • メッセージ: Type '%dataType;' in source side cannot be mapped to a type that supported by sink side(column name:'%columnName;') in autocreate table.

  • 原因:自動作成テーブルが、ソースの要件を満たすことができません。

  • 推奨事項: マッピング で列のデータ型を更新するか、ターゲット サーバーで手動でシンク テーブルを作成してください。

エラー コード:SqlDataTypeNotSupported

  • メッセージ: A database operation failed. Check the SQL errors.

  • 原因:SQL ソースで問題が発生し、エラーが SqlDateTime オーバーフローに関連している場合、データ値が論理型の範囲 (1/1/1753 12:00:00 AM - 12/31/9999 11:59:59 PM) を超えています。

  • 推奨事項:ソースの SQL クエリで型を文字列にキャストするか、Copy アクティビティの列マッピングで列の型を String に変更してください。

  • 原因:SQL シンクで問題が発生し、エラーが SqlDateTime オーバーフローに関連している場合、データ値はシンク テーブルで許容される範囲を超えています。

  • 推奨事項: シンク テーブルで、対応する列の型を datetime2 型に更新してください。

エラー コード:SqlInvalidDbStoredProcedure

  • メッセージ: The specified Stored Procedure is not valid. It could be caused by that the stored procedure doesn't return any data. Invalid Stored Procedure script: '%scriptName;'.

  • 原因と推奨事項: このエラーはさまざまな原因により発生する可能性があります。 考えられる原因の分析および関連する推奨事項については、以下の一覧を確認してください。

    原因分析 推奨
    指定されたストアド プロシージャは無効です。 SQL ツールを使用してストアド プロシージャを検証してください。 ストアド プロシージャがデータを返せることを確認してください。
    検索アクティビティでは、なんらかの値を返すストアド プロシージャが必要ですが、ストアド プロシージャ コードでは値は返されません。 ストアド プロシージャで返されるデータがないことが予想される場合は、ストアド プロシージャ アクティビティを使用します。

エラー コード:SqlInvalidDbQueryString

  • メッセージ: The specified SQL Query is not valid. It could be caused by that the query doesn't return any data. Invalid query: '%query;'

  • 原因:指定された SQL クエリは無効です。 クエリがデータを返さないという原因が考えられます。

  • 推奨事項: SQL ツールを使用して SQL クエリを検証してください。 クエリがデータを返せることを確認してください。

エラー コード:SqlInvalidColumnName

  • メッセージ: Column '%column;' does not exist in the table '%tableName;', ServerName: '%serverName;', DatabaseName: '%dbName;'.

  • 原因:構成が正しくない可能性があるため、列が見つかりません。

  • 推奨事項: クエリの列、データセットの 構造、およびアクティビティの マッピング を検証してください。

エラー コード:SqlBatchWriteTimeout

  • メッセージ: Timeouts in SQL write operation.

  • 原因:この問題は、SQL Database の一時的な障害が原因である可能性があります。

  • 推奨事項: 操作をもう一度お試しください。 問題が解決しない場合は、Azure SQL サポートにお問い合わせください。

エラー コード:SqlBatchWriteTransactionFailed

  • メッセージ: SQL transaction commits failed.

  • 原因:例外の詳細が常にトランザクションのタイムアウトを示す場合は、統合ランタイムとデータベース間のネットワーク待機時間が、既定のしきい値の 30 秒を超えています。

  • 推奨事項: SQL リンク サービス接続文字列を、120 以上の 接続タイムアウト 値を使用して更新し、アクティビティを再実行します。

  • 原因:SQL 接続が切断されているという例外の詳細が断続的に示される場合は、一時的なネットワーク障害または SQL Database 側の問題である可能性があります。

  • 推奨事項: アクティビティを再試行し、SQL データベース側のメトリックを確認してください。

エラー コード:SqlBulkCopyInvalidColumnLength

  • メッセージ: SQL Bulk Copy failed due to receive an invalid column length from the bcp client.

  • 原因: 一括コピー プログラム (bcp) ユーティリティ クライアントから無効な列長を受け取ったため、SQL 一括コピーが失敗しました。

  • 推奨事項: 問題が発生した行を特定するには、Copy アクティビティのフォールト トレランス機能を有効にします。 これにより、問題のある行がストレージにリダイレクトされ、さらに調査できるようになります。 詳細については、コピー アクティビティのフォールト トレランスに関する記事を参照してください。

エラー コード:SqlConnectionIsClosed

  • メッセージ: The connection is closed by SQL Database.

  • 原因:SQL 接続は、同時実行が多い場合に SQL データベースによって閉じられ、サーバーは接続を終了します。

  • 推奨事項: 接続を再試行します。 問題が解決しない場合は、Azure SQL サポートにお問い合わせください。

エラー コード: SqlServerInvalidLinkedServiceCredentialMissing

  • メッセージ: The SQL Server linked service is invalid with its credential being missing.

  • 原因: リンク サービスが適切に構成されていません。

  • 推奨事項: SQL サーバーのリンク サービスを検証して修正します。

エラー コード: SqlParallelFailedToDetectPartitionColumn

  • メッセージ: Failed to detect the partition column with command '%command;', %message;.

  • 原因: テーブルに主キーまたは一意のキーがありません。

  • 推奨事項: テーブルを確認して、主キーまたは一意のインデックスが作成されていることを確認します。

エラー コード: SqlParallelFailedToDetectPhysicalPartitions

エラー コード: SqlParallelFailedToGetPartitionRangeSynapse

  • メッセージ: Failed to get the partitions for azure synapse with command '%command;', %message;.

  • 原因: テーブルの物理パーティションが作成されていません。 データベースを確認してください。

  • 推奨事項: この問題を解決するには、「専用 SQL プールでのテーブルのパーティション分割」を参照してください。

エラー メッセージ: 文字列から uniqueidentifier に変換中、変換が失敗しました。

  • 現象:ステージング コピーおよび PolyBase を使用して、(SQL Server などの) 表形式のデータ ソースから Azure Synapse Analytics にデータをコピーすると、次のエラーが発生します。

    ErrorCode=FailedDbOperation,Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException, Message=Error happened when loading data into Azure Synapse Analytics., Source=Microsoft.DataTransfer.ClientLibrary,Type=System.Data.SqlClient.SqlException, Message=Conversion failed when converting from a character string to uniqueidentifier...

  • 原因:Azure Synapse Analytics PolyBase では、空の文字列を GUID に変換することはできません。

  • 解決方法:Copy アクティビティ シンクの PolyBase の設定で、 [既定の種類を使用します] オプションを false に設定します。

エラー メッセージ:予期されたデータ型: DECIMAL(x,x)、問題のある値

  • 現象:ステージング コピーおよび PolyBase を使用して、(SQL Server などの) 表形式のデータ ソースから Azure Synapse Analytics にデータをコピーすると、次のエラーが発生します。

    ErrorCode=FailedDbOperation,Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException, Message=Error happened when loading data into Azure Synapse Analytics., Source=Microsoft.DataTransfer.ClientLibrary,Type=System.Data.SqlClient.SqlException, Message=Query aborted-- the maximum reject threshold (0 rows) was reached while reading from an external source: 1 rows rejected out of total 415 rows processed. (/file_name.txt) Column ordinal: 18, Expected data type: DECIMAL(x,x), Offending value:..

  • 原因:Azure Synapse Analytics の PolyBase では、空の文字列 (null 値) を decimal 型の列に挿入することはできません。

  • 解決方法:Copy アクティビティ シンクの PolyBase の設定で、 [既定の種類を使用します] オプションを false に設定します。

エラー メッセージ:Java の例外メッセージ:HdfsBridge::CreateRecordReader

  • 現象:PolyBase を使用して Azure Synapse Analytics にデータをコピーすると、次のエラーが発生します。

    Message=110802;An internal DMS error occurred that caused this operation to fail. Details: Exception: Microsoft.SqlServer.DataWarehouse.DataMovement.Common.ExternalAccess.HdfsAccessException, Message: Java exception raised on call to HdfsBridge_CreateRecordReader. Java exception message:HdfsBridge::CreateRecordReader - Unexpected error encountered creating the record reader.: Error [HdfsBridge::CreateRecordReader - Unexpected error encountered creating the record reader.] occurred while accessing external file.....

  • 原因:この原因として、スキーマ (列幅の合計) が大きすぎる (1 MB を超える) ことが考えられます。 すべての列のサイズを追加して、ターゲットの Azure Synapse Analytics テーブルのスキーマを確認します。

    • Int = 4 バイト
    • Bigint = 8 バイト
    • Varchar(n)、char(n)、binary(n)、varbinary(n) = n バイト
    • Nvarchar(n)、nchar(n) = n*2 バイト
    • Date = 6 バイト
    • Datetime/(2)、smalldatetime = 16 バイト
    • Datetimeoffset = 20 バイト
    • Decimal = 19 バイト
    • Float = 8 バイト
    • Money = 8 バイト
    • Smallmoney = 4 バイト
    • Real = 4 バイト
    • Smallint = 2 バイト
    • Time = 12 バイト
    • Tinyint = 1 バイト
  • 解決方法:

    • 列幅を 1 MB 未満に縮小します。
    • または、PolyBase を無効にして一括挿入アプローチを使用します。

エラー メッセージ:HTTP 条件ヘッダーを使用して指定した条件が満たされません。

  • 現象:SQL クエリを使用して Azure Synapse Analytics からデータをプルすると、次のエラーが発生します。

    ...StorageException: The condition specified using HTTP conditional header(s) is not met...

  • 原因:Azure Storage で外部テーブルのクエリを実行中に、Azure Synapse Analytics で問題が発生しました。

  • 解決方法:SQL Server Management Studio (SSMS) で同じクエリを実行し、同じ結果が得られるかどうかを確認します。 表示される場合は、Azure Synapse Analytics に対するサポート チケットを作成し、ご利用の Azure Synapse Analytics サーバーとデータベース名を入力します。

パフォーマンス レベルが低いため、コピーに失敗します

  • 現象:Azure SQL Database にデータをコピーすると、次のエラーが表示されます。Database operation failed. Error message from database execution : ExecuteNonQuery requires an open and available Connection. The connection's current state is closed.

  • 原因:Azure SQL Database s1 は入出力 (I/O) の制限に達しています。

  • 解決方法:問題を修正するには、Azure SQL Database のパフォーマンス レベルをアップグレードします。

エラー メッセージ:文字列またはバイナリ データが切り捨てられました

  • 現象:オンプレミスの Azure SQL Server テーブルにデータをコピーすると、エラーが発生します。

  • 原因: SQL テーブル スキーマ定義に、想定よりも短い列が 1 つ以上あります。

  • 解決方法:この問題を解決するには、次の方法を試してください。

    1. 問題が発生している行のトラブルシューティングを行うには、SQL シンクのフォールト トレランスを適用します。具体的には redirectIncompatibleRowSettings を適用します。

      注意

      フォールト トレランスには、追加の実行時間が必要になる場合があります。これにより、コストが高くなる可能性があります。

    2. SQL テーブル スキーマ列の長さでリダイレクトされたデータを再確認し、更新が必要な列を調べます。

    3. それに応じてテーブル スキーマを更新します。

エラー コード: FailedDbOperation

  • メッセージ: User does not have permission to perform this action.

  • 推奨事項: PolyBase を使用してデータを読み込むときに、Azure Synapse Analytics コネクタで構成されているユーザーが、ターゲット データベースに対する 'CONTROL' アクセス許可を持っていることを確認します。 詳しくは、こちらの文書を参照してください。

エラー コード: Msg 105208

  • 現象: エラー コード: Error code: Msg 105208, Level 16, State 1, Line 1 COPY statement failed with the following error when validating value of option 'FROM': '105200;COPY statement failed because the value for option 'FROM' is invalid.'
  • 原因: 現在、新しい DNS パーティション分割機能を使っている Azure ストレージ アカウントに COPY コマンドを使ってデータを取り込むと、エラーが発生します。 DNS パーティション機能を使うと、サブスクリプションあたり最大 5,000 個のストレージ アカウントを作成できます。
  • 解決方法: 新しい Azure Storage DNS パーティション機能 (現在パブリック プレビュー段階) を使っていないサブスクリプションに、ストレージ アカウントをプロビジョニングします。

エラー コード: SqlDeniedPublicAccess

  • メッセージ: Cannot connect to SQL Database: '%server;', Database: '%database;', Reason: Connection was denied since Deny Public Network Access is set to Yes. To connect to this server, 1. If you persist public network access disabled, please use Managed Vritual Network IR and create private endpoint. https://docs.microsoft.com/en-us/azure/data-factory/managed-virtual-network-private-endpoint; 2. Otherwise you can enable public network access, set "Public network access" option to "Selected networks" on Azure SQL Networking setting.

  • 原因: Azure SQL Database は、パブリック ネットワーク アクセスを拒否するように設定されています。 これには、マネージド仮想ネットワークを使用し、プライベート エンドポイントを作成してアクセスする必要があります。

  • 推奨事項:

    1. パブリック ネットワーク アクセスを無効にすることを要求する場合は、マネージド仮想ネットワーク統合ランタイムを使用し、プライベート エンドポイントを作成します。 詳細については、「Azure Data Factory のマネージド仮想ネットワーク」を参照してください。

    2. それ以外の場合は、Azure SQL Database の [ネットワーク] 設定ページで [選択したネットワーク][パブリック ネットワーク アクセス] オプションを設定して、[パブリック ネットワーク アクセス] を有効にします。

トラブルシューティングのその他のヘルプについては、次のリソースを参照してください。