从SQL代理作业运行dtsx包时出现Error 0x80040E4D错误求助
SQL代理作业执行远程SSIS包失败的解决方法
问题重现
在ServerA配置SQL代理作业,尝试执行ServerB上的Lettersend.dtsx包,包在ServerB本地运行正常,但通过作业执行时报错:
Executed as user: NT Service\SQLSERVERAGENT. Microsoft (R) SQL Server Execute Package Utility Version 13.0.6300.2 for 64-bit Copyright (C) 2016 Microsoft. All rights reserved. Started: 2:05:09 PM
无法加载包 "\DATAX\Lettersend",错误代码0xC0014062。
描述: LoadFromSQLServer方法遇到OLE DB错误代码0x80040E4D(用户 'Warehouse\SQLServ$' 登录失败)。
执行的SQL语句失败。
核心原因
SQL代理默认使用本地系统账户NT Service\SQLSERVERAGENT运行,访问远程服务器时会以本地SQL Server的机器账户(Warehouse\SQLServ$)进行身份验证,该账户没有ServerB上SSIS包存储的访问权限。
解决步骤
- 给机器账户分配远程权限:登录ServerB,在SQL Server中添加
Warehouse\SQLServ$为登录账户,授予该账户对SSIS存储中\DATAX文件夹及Lettersend包的读取权限;同时确保该账户对包关联的数据源有对应访问权限。 - 改用域代理账户执行作业:在ServerA的SQL代理中创建一个域账户代理(该账户需同时拥有ServerA作业执行权限和ServerB的SSIS包访问权限),然后修改作业步骤的“运行方式”为这个代理账户。
- 核对包路径正确性:确认作业中填写的包路径
\DATAX\Lettersend与ServerB上的SSIS存储路径完全一致,注意大小写敏感问题。 - 检查运行时兼容性:如果
Lettersend包依赖32位组件(如旧版驱动),在作业步骤配置中勾选“使用32位运行时”选项,适配64位SQL代理环境。
内容的提问来源于stack exchange,提问作者Jose Rosales
相关产品推荐
相关产品推荐

