通过SQL Server代理调用SSIS包时出现登录失败错误求助
解决SQL Server Agent调用SSIS包的登录失败问题
错误根源
报错中的NT0001\ABD是执行SSIS包的账号(要么是SQL Server Agent的默认服务账号,要么是作业指定的代理账号),该账号未被授予访问数据源/目标SQL Server实例的权限,或者SSIS包的连接管理器配置存在身份验证错误。
具体解决步骤
1. 检查SSIS包的连接管理器配置
- 用SQL Server Data Tools(SSDT)加载存储在SQL Server中的目标SSIS包
- 找到数据源和数据目标对应的连接管理器,右键打开属性面板
- 确认身份验证配置:
- 若使用Windows身份验证:确保
NT0001\ABD账号在目标SQL Server实例中已创建登录名,且对涉及的数据库拥有db_datareader、db_datawriter或更高权限 - 若使用SQL Server身份验证:检查连接字符串中的用户名、密码是否正确,且该SQL账号具备对应数据库的访问权限
- 若使用Windows身份验证:确保
- 修改后重新部署包到SQL Server
2. 配置SQL Server Agent代理账号
- 在SQL Server Management Studio(SSMS)中,展开SQL Server Agent > 代理 > 代理账号
- 创建或选择一个代理账号,确保:
- 该账号属于
SQLAgentOperatorRole、SQLAgentReaderRole或SQLAgentUserRole(按需选择权限等级) - 对应的Windows账号在目标SQL Server实例中有合法登录权限及数据库操作权限
- 该账号属于
- 编辑SSIS作业步骤,在运行身份下拉菜单中选择这个配置完成的代理账号
3. 修复SQL Server Agent服务账号权限
- 若作业使用SQL Server Agent默认服务账号(即
NT0001\ABD):- 打开系统服务(services.msc),找到SQL Server Agent服务,确认其登录账号
- 在SSMS中为该账号创建SQL Server登录名,并授予所需的数据库权限
- 重启SQL Server Agent服务使权限生效
4. 验证包执行有效性
- 在SSMS中右键目标SSIS包,选择执行,若手动执行成功,说明包本身配置无问题,问题仅出在作业执行账号的权限上;若手动执行也失败,优先排查包的连接配置和本地执行账号的权限
内容的提问来源于stack exchange,提问作者Db2Cramp
相关产品推荐
相关产品推荐

