VS2019开发的SSIS包迁移至SQL Server 2022遇版本错误求助
解决SSIS包dtexec运行报错0xC001700A的问题
核心原因
报错本质是调用的dtexec版本与SSIS包的版本标识不匹配:新服务器同时存在VS2019关联的SQL Server 2019版dtexec,以及SQL Server 2022自带的dtexec,若bat文件默认调用了旧版dtexec,会因无法适配SQL Server 2022的环境逻辑触发版本校验错误。
可行解决方案
1. 指定调用SQL Server 2022版本的dtexec
SQL Server 2022的dtexec完全兼容运行SQL Server 2019开发的SSIS包,只需在bat文件中写入完整路径调用该版本:
- 64位版本路径:
C:\Program Files\Microsoft SQL Server\160\DTS\Binn\dtexec.exe - 32位版本路径(若包依赖32位组件):
C:\Program Files (x86)\Microsoft SQL Server\160\DTS\Binn\dtexec.exe
示例bat命令:
"C:\Program Files\Microsoft SQL Server\160\DTS\Binn\dtexec.exe" /f "C:\YourSSISProject\YourPackage.dtsx" /conf "C:\YourConfig\ConfigFile.dtsConfig"
2. 手动修改包的版本标识(无需VS2022)
若调用SQL2022版dtexec仍报错,可直接修改包文件的版本属性:
- 用文本编辑器(如Notepad++)打开
.dtsx包文件 - 找到
<DTS:Package>标签下的DTS:VersionMajor、DTS:VersionMinor、DTS:VersionBuild属性,修改为SQL Server 2022对应值:DTS:VersionMajor="16"DTS:VersionMinor="0"DTS:VersionBuild="0"
- 保存文件后重新用SQL2022版dtexec运行
注意:修改前务必备份原包文件,避免损坏。
3. 部署到SSIS目录执行
将项目部署到SQL Server 2022的SSISDB目录,通过目录执行可规避版本校验问题:
- 在VS2019中保持
TargetServerVersion为SQL Server 2019,直接部署到新服务器的SQL2022实例(SQL2022兼容接收2019版本的部署包) - 部署完成后,用以下命令调用dtexec运行目录中的包:
"C:\Program Files\Microsoft SQL Server\160\DTS\Binn\dtexec.exe" /ISSERVER "\SSISDB\YourFolder\YourProject\YourPackage" /SERVER "YourSQL2022Instance"
验证要点
- 执行
dtexec.exe /?查看版本信息,确认调用的是16.x开头的SQL Server 2022版本 - 若包依赖第三方组件,确保新服务器已安装对应版本的组件(32/64位需与dtexec版本匹配)
内容的提问来源于stack exchange,提问作者sydney
相关产品推荐
相关产品推荐

