針對 SSIS 整合運行時間中的套件執行進行疑難解答

適用於: Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的單一分析解決方案。 Microsoft Fabric 涵蓋從數據移動到數據科學、即時分析、商業智慧和報告等所有專案。 瞭解如何 免費啟動新的試用版

本文包含您在 SSIS 整合運行時間中執行 SQL Server Integration Services (SSIS) 套件時可能發現的最常見錯誤。 它描述解決錯誤的潛在原因和動作。

一般

在何處尋找記錄以進行疑難解答

使用 Azure Data Factory 入口網站來檢查 SSIS 套件執行活動的輸出。 輸出包含執行結果、錯誤訊息和作業標識碼。 如需詳細資訊,請參閱 監視管線

使用 SSIS 目錄 (SSISDB) 來檢查執行的詳細記錄。 如需詳細資訊,請參閱 監視執行中的封裝和其他作業

常見錯誤、原因和解決方案

錯誤訊息:「連線 ion 逾時已過期」或「服務發生處理您的要求時發生錯誤」。 然後再試一次。 "

以下是可能的原因和建議動作:

  • 數據源或目的地已多載。 檢查數據源或目的地上的負載,並查看其是否有足夠的容量。 例如,如果您使用 Azure SQL 資料庫,請考慮相應增加,如果資料庫可能會逾時。
  • SSIS 整合運行時間與數據源或目的地之間的網路不穩定,尤其是在連線跨區域或內部部署與 Azure 之間時。 遵循下列步驟,在 SSIS 套件中套用重試模式:
    • 請確定您的 SSIS 套件可以在失敗時重新執行,而不會造成副作用(例如資料遺失或數據重複)。
    • [一般] 索引標籤上設定 [執行 SSIS 封裝] 活動的 [重試] 和 [重試間隔]。Set properties on the General tab
    • 針對 ADO.NET 和 OLE DB 來源或目的地元件,請在 SSIS 套件或 SSIS 活動中的 連線 ion Manager 中設定 連線 RetryCount連線 RetryInterval

此問題通常表示數據源或目的地無法從 SSIS 整合運行時間存取。 原因可能會有所不同。 請嘗試下列動作:

  • 請確定您正確傳遞數據來源或目的地名稱/IP。
  • 確定已正確設定了防火牆。
  • 如果您的資料來源或目的地為內部部署,請確定您的虛擬網路已正確設定:
    • 您可以在相同的虛擬網路中布建 Azure VM,以確認問題是否來自虛擬網路組態。 然後,檢查是否可以從 Azure VM 存取數據源或目的地。
    • 您可以在將 Azure-SSIS 整合運行時間加入虛擬網路至虛擬網路中找到 更多有關搭配 SSIS 整合運行時間使用虛擬網路的詳細數據。

錯誤訊息:「ADO NET 來源無法取得連線 』...'」使用 「無法建立受控連接管理員」。 "

可能的原因是套件中使用的 ADO.NET 提供者未安裝在 SSIS 整合運行時間中。 您可以使用自訂安裝程式來安裝提供者。 您可以在自訂 Azure-SSIS 整合運行時間的設定中找到自訂設定的更多詳細資料。

錯誤訊息:「連線 』...'找不到 ”

舊版 SQL Server Management Studio (SSMS) 的已知問題可能會導致此錯誤。 如果套件包含自定義元件(例如 SSIS Azure Feature Pack 或合作夥伴元件)未安裝在 SSMS 用來進行部署的電腦上,SSMS 將會移除元件並造成錯誤。 將 SSMS 升級至已修正問題的最新版本。

錯誤訊息:「SSIS 執行程序結束代碼: -1073741819。 "

  • 潛在原因與建議的動作:
    • 此錯誤可能是因為當多個 Excel 來源或目的地在多線程中平行執行時,Excel 來源和目的地的限制。 您可以藉由將 Excel 元件變更為依序執行,或透過 ExecuteOutOfProcess 屬性設定為 True 的「執行封裝工作」,將它們分成不同的套件,並觸發此限制。

錯誤訊息:「磁碟上沒有足夠的空間」

此錯誤表示本機磁碟會用在 SSIS 整合運行時間節點中。 檢查您的套件或自訂設定是否耗用大量磁碟空間:

  • 如果您的套件取用磁碟,則套件執行完成之後,將會釋出磁碟。
  • 如果您的自定義設定取用磁碟,您必須停止 SSIS 整合運行時間、修改文稿,然後再次啟動整合運行時間。 您為自定義設定指定的整個 Azure Blob 容器將會複製到 SSIS 整合運行時間節點,因此請檢查該容器下是否有任何不必要的內容。

錯誤訊息:「無法從 master 擷取資源。 Microsoft.SqlServer.IntegrationServices.Scale.ScaleoutContract.Common.MasterResponseFailedException:Code:300004。 描述:載入檔案 「***」 失敗。 "

  • 潛在原因與建議的動作:
    • 如果 SSIS 活動是從檔案系統執行封裝(套件檔案或項目檔),則當專案、套件或組態檔無法透過您在 SSIS 活動中提供的套件存取認證存取時,就會發生此錯誤
      • 如果您使用 Azure 檔案:
        • 檔案路徑應以 \\<storage account name.file.core.windows.net>\<file share 路徑開頭>
        • 網域應該是 “Azure”
        • 用戶名稱應該是 <記憶體帳戶名稱>
        • 密碼應該是 <記憶體存取金鑰>
      • 如果您使用內部部署檔案,請檢查是否已正確設定 VNet、套件存取認證和許可權,讓您的 Azure-SSIS 整合運行時間可以存取內部部署檔案共用

錯誤訊息:「檔名 』...'在連接中指定的 無效 ”

  • 潛在原因與建議的動作:
    • 指定了無效的檔名
    • 請確定您使用的是 FQDN (完整功能變數名稱),而不是在連接管理員中使用短時間

錯誤訊息:「無法開啟檔案 』...'"

當套件執行在 SSIS 整合運行時間的本機磁碟找不到檔案時,就會發生此錯誤。 請嘗試下列動作:

  • 請勿在 SSIS 整合運行時間中執行的套件中使用絕對路徑。 請改用目前的執行工作目錄 (.) 或暫存資料夾 (%TEMP%) 。
  • 如果您需要在 SSIS 整合運行時間節點上保存一些檔案,請依照自訂設定中所述準備檔案。 執行完成後,將會清除工作目錄中的所有檔案。
  • 使用 Azure 檔案儲存體,而不是將檔案儲存在 SSIS 整合運行時間節點中。 如需詳細資訊,請參閱 使用 Azure 檔案共用

錯誤訊息:「資料庫 『SSISDB』 已達到其大小配額」

可能的原因是在 Azure SQL 資料庫 或 SQL 受管理執行個體 中建立的 SSISDB 資料庫已達到其配額。 請嘗試下列動作:

錯誤訊息:「資料庫的要求限制為 ...和已經到達。 "

如果在 SSIS 整合運行時間中平行執行許多套件,可能會發生此錯誤,因為 SSISDB 已達到其要求限制。 請考慮增加 SSISDB 的 DTU 以解決此問題。 您可以在邏輯伺服器 SQL 資料庫 限制中找到詳細資料

錯誤訊息:「SSIS 作業失敗,並出現非預期的作業狀態:..."

此錯誤主要是由暫時性問題所造成,因此請嘗試重新執行封裝執行。 遵循下列步驟,在 SSIS 套件中套用重試模式:

  • 請確定您的 SSIS 套件可以在失敗時重新執行,而不會造成副作用(例如資料遺失或數據重複)。
  • [一般] 索引標籤上設定 [執行 SSIS 封裝] 活動的 [重試] 和 [重試間隔]。Set properties on the General tab
  • 針對 ADO.NET 和 OLE DB 來源或目的地元件,請在 SSIS 套件或 SSIS 活動中的 連線 ion Manager 中設定 連線 RetryCount連線 RetryInterval

錯誤訊息:「沒有作用中的背景工作角色。 "

此錯誤通常表示 SSIS 整合運行時間的狀態不良。 檢查 Azure 入口網站 狀態和詳細錯誤。 如需詳細資訊,請參閱 Azure-SSIS 整合運行時間

錯誤訊息:「您的整合運行時間無法升級,且最終會停止運作,因為我們無法存取您為自定義設定提供的 Azure Blob 容器。 "

當 SSIS 整合運行時間無法存取針對自訂設定所設定的記憶體時,就會發生此錯誤。 檢查您提供的共用存取簽章 (SAS) URI 是否有效且尚未過期。

錯誤訊息:「Microsoft OLE DB Provider for Analysis Services。 'Hresult: 0x80004005 Description:' COM 錯誤: COM 錯誤: mscorlib;叫用的目標已擲回例外狀況”

其中一個可能的原因是已啟用 Microsoft Entra 多重要素驗證的使用者名稱或密碼已針對 Azure Analysis Services 驗證進行設定。 SSIS 整合運行時間不支援此驗證。 嘗試使用服務主體進行 Azure Analysis Services 驗證:

  1. 準備服務主體,如使用服務主體的自動化中所述

  2. 在 連線 ion Manager 中,設定 [使用特定的使用者名稱和密碼:將 app:<AppID TenantID<>@> 設定為使用者名稱和 clientSecret 作為密碼。 以下是正確格式化使用者名稱的範例:

    app:12345678-9012-3456-789a-bcdef012345678@9abcdef0-1234-5678-9abc-def0123456789abc

  3. 在 連線 ion Manager 中,設定 [使用特定使用者名稱和密碼:將 AppID 設定為使用者名稱],並將 clientSecret 設定為密碼。

錯誤訊息:「ADONET 來源在使用受控識別時無法取得連線 {GUID},並出現下列錯誤訊息:使用者 'NT AUTHORITY\ANONYMOUS LOGON' 登入失敗」

當參數 連線 UsingManagedIdentity 為 True 時,請確定您未將 連線 Manager 的驗證方法設定為 Active Directory 密碼驗證。 您可以改為將它設定為 SQL 驗證,如果設定 連線 UsingManagedIdentity,則會予以忽略。

錯誤訊息:「0xC020801F ..., OData 來源 [...]: 無法從運行時間連接管理員取得受控連線;

其中一個可能的原因是傳輸層安全性 (TLS) 未在 OData 來源所需的 SSIS 整合運行時間中啟用。 您可以使用自訂設定,在 SSIS 整合運行時間中啟用 TLS。 如需詳細資訊,請參閱無法從 SSIS 連線 Project Online Odata 和自定義 Azure-SSIS 整合運行時間的設定。

錯誤訊息:「要求具有作業 guid 的暫存工作...失敗,因為錯誤:無法分派暫存作業,並出現錯誤訊息:Microsoft.SqlServer.IntegrationServices.AisAgentCore.AisAgentException:無法載入數據 Proxy。 "

請確定您的 Azure-SSIS 整合運行時間已設定為自我裝載整合運行時間。 如需詳細資訊,請參閱 在 ADF 中將自我裝載 IR 設定為 Azure-SSIS IR 的 Proxy。

錯誤訊息:「預備工作狀態:失敗。 暫存工作錯誤:ErrorCode:2010、ErrorMessage:自我裝載整合運行時間...處於脫機狀態”

請確定已安裝並啟動自我裝載整合運行時間。 如需詳細資訊,請參閱 建立及設定自我裝載整合運行時間

錯誤訊息:「暫存工作錯誤:ErrorCode: 2906,ErrorMessage:套件執行失敗。 輸出: {“OperationErrorMessages”: “錯誤: 要求的 OLE DB 提供者 ...未註冊。 如果未安裝 64 位驅動程式,請以 32 位模式執行套件..."

請確定套件中的 OLE DB 連接器所使用的對應提供者已正確安裝在自我裝載整合運行時間電腦上。 如需詳細資訊,請參閱 在 ADF 中將自我裝載 IR 設定為 Azure-SSIS IR 的 Proxy

錯誤訊息:「暫存工作錯誤:ErrorCode: 2906,ErrorMessage:套件執行失敗。 輸出:{“OperationErrorMessages”: “Error: System.IO.FileLoadException: 無法載入檔案或元件 'Microsoft.WindowsAzure.儲存體, Version=..., Culture=neutral, PublicKeyToken=31bf3856ad364e35' 或其其中一個相依性。 找到的元件指令清單定義與元件參考不符。..."

其中一個可能的原因是您的自我裝載整合運行時間未正確安裝或升級。 建議下載並重新安裝最新的自我裝載整合運行時間。 如需詳細資訊,請參閱 建立及設定自我裝載整合運行時間

錯誤訊息:「預備工作失敗。 TaskStatus:Failed、ErrorCode:2906、ErrorMessage:套件執行失敗。 如需詳細資訊,請選取活動在相同數據列上執行的輸出。輸出: {“OperationErrorMessages”: “4/14/2021 7:10:35 AM +00:00 : = 無法啟動命名管道 Proxy..."

檢查安全策略是否已正確指派給執行自我裝載 IR 服務的帳戶。 如果在執行 SSIS 套件活動上使用 Windows 驗證,或在 SSIS 目錄 (SSISDB) 中設定執行認證,則必須將相同的安全策略指派給使用的 Windows 帳戶。 如需詳細資訊,請參閱 在 ADF 中將自我裝載 IR 設定為 Azure-SSIS IR 的 Proxy

錯誤訊息:「要求元數據時需要連線。 如果您要脫機工作,請取消核取 [SSIS] 功能表上的 [離線工作] 以啟用連線”

錯誤訊息:「預備工作狀態:失敗。 暫存工作錯誤:ErrorCode:2906、ErrorMessage:套件執行失敗。 輸出: {“OperationErrorMessages”: “SSIS 執行程序結束代碼: -1.\n”, “LogLocation”: “...\SSISTelemetry\ExecutionLog\...”, “effectiveIntegrationRuntime”: “...”, “executionDuration”: ..., “durationInQueue”: { “integrationRuntimeQueue”: ... }} ”

請確定 Visual C++ 執行時間已安裝在自我載入整合執行時間電腦上。 如需詳細資訊,請參閱 在 ADF 中將自我裝載 IR 設定為 Azure-SSIS IR 的 Proxy

錯誤訊息:「從預備讀取時逾時」

當 SSIS-IR 搭配 SHIR 作為數據 Proxy 無法成功從預備 Blob 讀取數據時,就會發生此錯誤。 通常是因為 SHIR 無法將內部部署資料傳輸到暫存 Blob。 然後 SSIS-IR 嘗試讀取暫存資料失敗,併發生逾時錯誤。 您必須檢查 C:\ProgramData\SSISTelemetry 資料夾中的 SHIR 記錄,以取得運行時間記錄和 C:\ProgramData\SSISTelemetry\ExecutionLog 資料夾,以進一步調查 SHIR 未成功上傳數據至暫存 Blob 的原因。

意外觸發多個封裝執行

  • 潛在原因與建議的動作:
    • ADF 預存程式活動或查閱活動可用來觸發 SSIS 封裝執行。 t-sql 命令可能會發生暫時性問題,並觸發重新執行,這會導致多個封裝執行。
    • 請改用 ExecuteSSISPackage 活動,以確保除非使用者在活動中設定重試計數,否則不會重新執行套件執行。 如需詳細數據,請參閱 使用執行 SSIS 封裝活動執行 SSIS 套件。
    • 調整 t-sql 命令,藉由檢查是否已觸發執行來重新執行

套件執行花費太長

以下是可能的原因和建議動作:

  • SSIS 整合運行時間上已排程太多套件執行。 所有這些執行都會在佇列中等候其回合。
    • 使用此公式來判斷最大值:

      每個 IR 的平行執行計數上限 = 節點計數 * 每個節點的平行執行次數上限

    • 若要瞭解如何設定每個節點的節點計數和最大平行執行,請參閱 在 Azure Data Factory 中建立 Azure-SSIS 整合運行時間。

  • SSIS 整合運行時間已停止或狀態不良。 若要瞭解如何檢查 SSIS 整合運行時間狀態和錯誤,請參閱 Azure-SSIS 整合運行時間

我們也建議您在 [ 一般 ] 索引標籤上設定逾時:

Set properties on the General tab .

套件執行效能不佳

請嘗試下列動作:

  • 請確定 SSIS 整合運行時間位於與數據源和目的地相同的區域中。

  • 將封裝執行的記錄層級設定為 [效能 ],以收集執行中每個元件的持續時間資訊。 如需詳細資訊,請參閱 Integration Services (SSIS) 記錄

  • 檢查 Azure 入口網站中的 IR 節點效能:

    • 如需如何監視 SSIS 整合運行時間的資訊,請參閱 Azure-SSIS 整合運行時間
    • 您可以在 Azure 入口網站 中檢視數據處理站的計量,以尋找 SSIS 整合運行時間的 CPU/記憶體歷程記錄。 Monitor metrics of the SSIS integration runtime