Agent 作業執行 SSIS 套件失敗,歷史記錄僅顯示「以 xxx 帳戶身份執行失敗」,無詳細錯誤資訊。
EXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE;
EXEC xp_cmdshell 'dtexec /f "C:\SSIS\Packages\UpsertData.dtsx"';
**此模式無需 `xp_cmdshell`,Agent 直接呼叫 SSIS 目錄執行引擎,權限隔離、日誌完整、參數化原生支援。**
EXEC xp_cmdshell 'dtexec /DTS "\MSDB\MyPackage" /SERVER "MyInstance" /MAXCONCURRENT "-1" /CHECKPOINTING OFF /REPORTING V';
| 錯誤現象 | 根因 | 解決 |
|---|---|---|
| xp_cmdshell 回傳 1 / Access denied | Agent 服務帳號無執行權限或路徑不可達 | Agent 服務帳號授予資料夾讀取/執行權限;使用 UNC 路徑 |
| 無法解密受保護的 XML 節點 (0x8009000B) | 套件保護層級 `EncryptSensitiveWithUserKey`,匯入 MSDB 時未改為 `ServerStorage` | 重新匯入並選 `ServerStorage`;或部署至 SSISDB |
| 連線管理員驗證失敗 | 執行上下文 (Agent 帳號/Proxy) 無目標資料庫權限 | 建立 Proxy 帳號 (Credentials + Proxy) → 作業步驟「執行身分」選 Proxy |
| 32/64 位元不匹配 | 套件含 32-bit 元件 (Excel, 舊版 OLEDB),`dtexec` 預設 64-bit | 呼叫 `C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn\dtexec.exe` (x86 版) |
| 環境變數/參數未生效 | `/SET` 或 `/CONFIGFILE` 路徑錯誤 | 改用 SSISDB 環境變數/參數化,視覺化管理 |
Agent 執行 SSIS 失敗**先看保護層級、再看執行身分權限、最後看 32/64 位元**。新專案**直接上 SSISDB 專案部署模型**,棄用 `xp_cmdshell` + `dtexec` + MSDB 的舊鏈路,獲得原生參數化、日誌、安全、可觀測性。