SQL Server代理作业运行SSIS包提示找不到指定路径报错求助
问题描述
这是我第一次在stackoverflow发帖,希望大家能帮忙解决我项目遇到的问题。
我在SSMS中启动自行创建的对应作业时,收到如下报错信息:
执行用户:XXXX Microsoft (R) SQL Server Execute Package Utility 版本13.0.5026.0 32位 版权所有(C)2016 Microsoft。保留所有权利。启动时间:15:36:23 错误:2021-10-11 15:36:23.51 代码:0xC0011007 源:{BE14993C-9347-4920-8C3C-97E254866D05} 描述:无法将包加载为XML,因为包不具备有效的XML格式,后续将发布具体的XML解析器错误。错误结束 错误:2021-10-11 15:36:23.51 代码:0xC0011002 源:{BE14993C-9347-4920-8C3C-97E254866D05} 描述:打开包文件"D:\Test\XXX.dtsx"失败,错误代码0x80070003「系统找不到指定的路径」。该错误出现于加载包时,文件无法打开或无法正确加载为XML文档,可能是调用LoadPackage时指定了错误文件名,或是指定的XML文件格式不正确。错误结束 无法加载包"D:\Test\XXXX.dtsx",错误代码0xC0011002。描述:打开包文件"D:\Test\XXXX.dtsx"失败,错误代码0x80070003「系统找不到指定的路径」。该错误出现于加载包时,文件无法打开或无法正确加载为XML文档,可能是调用LoadPackage时指定了错误文件名,或是指定的XML文件格式不正确。源:{BE14993C-9347-4920-8C3C-97E254866D05} 启动时间:15:36:23 结束时间:15:36:23 耗时:0.016秒。找不到包,步骤失败。
已尝试的排查操作
- 检查了对应服务器的登录账号权限等配置
- 创建并配置了Credential与Proxy
- 确认Visual Studio中DelayValidation属性已设为True
- TargetServerVersion已设置为「SQL Server 2019」
- 安全选项下ProtectionLevel已设置为「EncryptSensitiveWithUserKey」
解决方案
核心报错0x80070003 系统找不到指定的路径,按以下优先级排查:
- 路径归属验证
确认SQL Server实例所在的服务器本地是否存在D:\Test\目录,以及目录下是否存在对应.dtsx包文件。如果SSMS在本地电脑运行、作业配置的是本地路径,而SQL Server实例部署在远端服务器,远端服务器不存在对应路径就会触发该报错。 - 路径字符校验
检查作业步骤中配置的包路径是否有拼写错误、多余空格、全角字符等问题,可直接复制服务器资源管理器中的完整路径替换配置项。 - Proxy账号权限校验
确认配置的Proxy账号对D:\Test\目录有读取权限,可直接用该账号登录服务器,手动访问对应路径下的dtsx包验证权限是否正常。 - SSIS运行版本匹配校验
当前使用的是32位SQL Server Execute Package Utility 13.0版本(对应SQL Server 2016),但TargetServerVersion设置为SQL Server 2019,版本不兼容也会触发加载异常:- 将Visual Studio中的TargetServerVersion调整为SQL Server 2016后重新生成包
- 或在作业步骤的「执行选项」中勾选「使用32位运行时」验证是否可正常运行
- 包部署方式调整
若上述操作均无效,可将dtsx包部署到SQL Server的SSIS目录,而非采用文件系统路径调用,避免路径类问题。
内容的提问来源于stack exchange,提问作者skarakus

