SQL Server Agent调度SSIS作业失败,SA账户登录错误求助
问题:SQL Server Agent调度SSIS包失败(SA登录错误)
我使用SA账户(系统管理员)运行SSIS包,该包单独执行时无任何问题。但将其通过SQL Server Agent调度为作业后,作业无法正常运行。配置调度作业时,所用凭据可正常从服务器找到目标SSIS包。
错误日志
Executed as user: NT Service \SQLSERVERAGENT. Microsoft (R) SQL Server Execute Package Utilty Version 16.0.1000.6 for 64-bit Copyright (C) 2022 Microsoft. All rights reserved. xxxxxx Connection manager "SourceConnectionOLEDB** Started: 11:30:00 AM Error: 2024-09-04 11:30:06.09 Code: 0xC0202009 Source: Data 360 Description: "Login failed for user "SA'". End Error Error: 2024-09-04 11:30:06.09 Description: SSIS Eror Code DTS_ E OLEDBERROR, An OLE DB error has occurred, Eror code: 0x800404D. An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0 Hresurce: 30040E40 Source: Data Flow Task 1 Source - Query [20] Description: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The 11:30:06.09 Code: 0xC0047017 Source: Data Flow Task 1 SSIS. Pipeline Description: Source - Query failed validation and returned error code 0xC020801C. Description: One or more component failed validation. End Eror Error: 2024-09-04 11:30:06.09 End Error Error: 2024-09-04 11:30:06.09 Code: 0xC0024107 Source: Data Flow Task 1 SSIS.Pipeline Source: Data Flow Task Started: 11:30:00 AM Finished: 11:30:06 AM Elapsed: 5.203 seconds. The package execution failed. The step failed. Description: There were errors during task validation. End Error DExec: The package execution returned DTSER_FAILURE (1).
原因分析
- 执行身份差异:SQL Server Agent作业默认以
NT Service\SQLSERVERAGENT账户执行,手动运行包时用的是SA账户,两者权限上下文完全不同。 - 敏感信息解密失败:若SSIS包保护级别设为
EncryptSensitiveDataWithUserKey,仅创建/手动运行包的用户能解密SA密码这类敏感信息,Agent账户无法解密,导致登录失败。 - SA账户配置异常:目标SQL Server可能未启用混合身份验证模式,或SA账户被禁用、密码错误;手动运行时可能实际用的是Windows身份验证,而非SA登录。
- 权限不足:
NT Service\SQLSERVERAGENT账户本身无目标数据库访问权限,即使包中配置了SA信息,也可能因环境限制无法使用。
解决方案
- 修改作业执行身份:在SQL Server Agent作业步骤配置中,选择具备SSIS包访问权限和数据库权限的代理账户(而非默认Agent服务账户),确保该账户能正常访问目标数据库。
- 调整SSIS包保护级别:
- 将保护级别改为
EncryptSensitiveDataWithPassword,并在作业步骤中指定解密密码;或改为ServerStorage(若包部署在SSIS目录),由SQL Server管理敏感信息。 - 若允许,改用Windows身份验证配置连接管理器,确保Agent执行账户(或代理账户)拥有目标数据库访问权限。
- 将保护级别改为
- 验证身份验证模式:确认目标SQL Server已启用「SQL Server和Windows身份验证模式」,且SA账户状态正常(未禁用、密码正确)。
- 检查账户权限:确保
NT Service\SQLSERVERAGENT或代理账户拥有SSIS目录读取权限,以及目标数据库的登录权限(若用Windows身份验证)。
内容的提问来源于stack exchange,提问作者bitterjam
相关产品推荐
相关产品推荐

