Share via


疑難排解 Azure Data Factory 和 Azure Synapse 中 SQL Server 連接器的 Azure Synapse Analytics、Azure SQL Database、SQL Server、Azure SQL 受控執行個體和 Amazon RDS 的問題

適用於:Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用

此文章提供建議,讓您了解如何針對 Azure Synapse Analytics、Azure SQL Database、SQL Server、Azure SQL 受控執行個體,以及 Azure Data Factory 和 Azure Synapse 中適用於 SQL Server 的 Amazon RDS 連接器常見問題進行疑難排解。

錯誤碼: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 防火牆上,將 [拒絕公用網路存取] 選項設定為 [否]。 如需詳細資訊,請參閱 Azure SQL 連線能力設定
    針對 Azure SQL,如果錯誤訊息包含 SQL 錯誤碼,例如「SqlErrorNumber=[errorcode]」,請參閱 Azure SQL 疑難排解指南。 如需建議,請參閱針對 Azure SQL Database 和 Azure SQL 受控執行個體的連線問題和其他錯誤進行疑難排解
    檢查連接埠 1433 是否位於防火牆的允許清單中。 如需詳細資訊,請參閱 SQL Server 所使用的連接埠
    如果錯誤訊息包含「SqlException」字串,SQL Database 錯誤表示某些特定作業失敗了。 如需詳細資訊,請依據 SQL 錯誤碼在資料庫引擎錯誤中進行搜尋。 如需進一步的協助,請連絡 Azure SQL 支援服務。
    如果這是暫時性問題 (例如,網路連線不穩定),請在活動原則中新增重試邏輯以減輕問題。 如需詳細資訊,請參閱管線和活動
    如果錯誤訊息包含「具有 IP 位址 '...' 的用戶端不能存取伺服器」字串,而且您正嘗試連接線到 Azure SQL Database,此錯誤通常是由 Azure SQL Database 防火牆問題所造成的。 在 Azure SQL Server 防火牆設定中,請啟用 [允許 Azure 服務和資源存取此伺服器] 選項。 如需詳細資訊,請參閱 Azure SQL Database 和 Azure Synapse IP 防火牆規則
    如果錯誤訊息包含Login failed for user '<token-identified principal>',則此錯誤通常是因為您未在資料庫中,將足夠的權限授與服務主體或系統指派的受控識別或使用者指派的受控識別 (取決於您選擇的驗證類型)。 在您的資料庫中,將足夠的權限授與您的服務主體或系統指派的受控識別或使用者指派的受控識別。

    針對 Azure SQL Database
        - 如果您使用服務主體驗證,遵循服務主體驗證
        - 如果您使用系統指派的受控識別驗證,遵循系統指派的受控識別驗證
        - 如果您使用使用者指派的受控識別驗證,遵循使用者指派的受控識別驗證
       
    針對 Azure Synapse Analytics
        - 如果您使用服務主體驗證,遵循服務主體驗證
        - 如果您使用系統指派的受控識別驗證,遵循適用於 Azure 資源驗證的系統指派的受控識別
        - 如果您使用使用者指派的受控識別驗證,遵循使用者指派的受控識別驗證
       
    針對 Azure SQL 受控執行個體
        - 如果您使用服務主體驗證,遵循服務主體驗證
       - 如果您使用系統指派的受控識別驗證,遵循系統指派的受控識別驗證
       - 如果您使用使用者指派的受控識別驗證,遵循使用者指派的受控識別驗證
    如果您在使用 Azure SQL 受控執行個體時遇到包含 The server was not found or was not accessible 的錯誤訊息,此錯誤通常是因為未啟用 Azure SQL 受控執行個體公用端點所造成。 請參閱在 Azure SQL 受控執行個體中設定公用端點啟用 Azure SQL 受控執行個體公用端點。

錯誤碼: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」字串,這通常是輸入資料無效所造成的。 若要找出發生問題的資料列,請在複製活動上啟用容錯功能,以將有問題的資料列重新導向至儲存體,以進行進一步調查。 如需詳細資訊,請參閱複製活動的容錯
    如果錯誤訊息包含「執行逾時已過期」,通常是由查詢逾時所造成。 在來源中設定 [查詢逾時] 和接收中的 [寫入批次逾時],以增加逾時。
    如果您將資料從混合式複製到內部部署 SQL Server 資料表時,錯誤訊息包含 Cannot find the object "dbo.Contoso" because it does not exist or you do not have permissions.,則目前的 SQL 帳戶沒有足夠的權限來執行 .NET SqlBulkCopy.WriteToServer 所發出的要求,或您的資料表或資料庫不存在。 切換至更具特殊權限的 SQL 帳戶,或檢查您的資料表或資料庫是否存在。

錯誤碼:SqlUnauthorizedAccess

  • 訊息Cannot connect to '%connectorName;'. Detail Message: '%message;'

  • 原因:認證不正確,或登入帳戶無法存取 SQL 資料庫。

  • 建議:進行檢查以確定登入帳戶有足夠的權限可以存取 SQL 資料庫。

錯誤碼:SqlOpenConnectionTimeout

  • 訊息Open connection to database timeout after '%timeoutValue;' seconds.

  • 原因:此問題可能是 SQL 資料庫暫時性失敗。

  • 建議:以較大的連線逾時值來重試作業,以更新連結服務的連接字串。

錯誤碼: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 查詢中的字串,或在複製活動資料行對應中,將資料行類型變更為 [字串]

  • 原因︰如果問題發生在 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 資料庫暫時性失敗所造成的。

  • 建議:重試作業。 若問題持續發生,請連絡 Azure SQL 支援服務。

錯誤碼:SqlBatchWriteTransactionFailed

  • 訊息SQL transaction commits failed.

  • 原因:如果例外狀況詳細資料持續指出交易逾時,則表示整合執行階段與資料庫之間的網路延遲大於 30 秒的預設閾值。

  • 建議:以等於或大於 120 的連線逾時值更新 SQL 連結服務的連接字串,然後重新執行活動。

  • 原因:如果例外狀況詳細資料不時指出 SQL 連線中斷,則可能是暫時性的網路失敗,或是 SQL 資料庫端的問題。

  • 建議:重試活動,並檢閱 SQL 資料庫端的計量。

錯誤碼:SqlBulkCopyInvalidColumnLength

  • 訊息SQL Bulk Copy failed due to receive an invalid column length from the bcp client.

  • 原因:SQL 大量複製失敗,因為它從大量複製程式公用程式 (bcp) 用戶端收到的資料行長度不正確。

  • 建議:若要識別發生問題的資料列,請在複製活動上啟用容錯功能。 這可能會將有問題的資料列重新導向至儲存體,以供進行進一步調查。 如需詳細資訊,請參閱複製活動的容錯

錯誤碼: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

  • 訊息Failed to detect the physical partitions with command '%command;', %message;.

  • 原因:未針對資料表建立任何實體分割區。 請檢查資料庫。

  • 建議:參考建立資料分割資料表和索引以解決此問題。

錯誤碼: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。

  • 解決方案:在複製活動接收的 [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 值) 插入到十進位資料行。

  • 解決方案:在複製活動接收的 [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 Synapse Analytics 在查詢 Azure 儲存體中的外部資料表時發生問題。

  • 解決方案:在 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. 若要針對哪些資料列有問題進行疑難排解,請套用 SQL 接收容錯,尤其是 redirectIncompatibleRowSettings

      注意

      容錯可能需要額外的執行時間,而導致成本上升。

    2. 請針對 SQL 資料表結構描述的資料行長度再次檢查所重新導向的資料,以了解需要更新哪些資料行。

    3. 據以更新資料表結構描述。

錯誤碼:FailedDbOperation

  • 訊息User does not have permission to perform this action.

  • 建議:確定 Azure Synapse Analytics 連接器中所設定的使用者在使用 PolyBase 載入資料時,必須具有目標資料庫的「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.'
  • 原因:目前,使用 COPY 命令將資料擷取至使用新 DNS 資料分割功能的 Azure 儲存體帳戶會導致錯誤。 DNS 分割區功能可讓客戶為每個訂用帳戶建立最多 5000 個儲存體帳戶。
  • 解決方案:請在未使用新 Azure 儲存體 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 的 [網路] 設定頁面上,將 [公用網路存取] 選項設定為 [選取的網路],以啟用公用網路存取。

如需更多疑難排解的協助,請嘗試下列資源: