VS 2017部署SSIS至SQL Server 2012报错求助
解决SSIS包部署到SQL Server 2012的版本不兼容问题
嘿,这个问题我太熟了——之前帮好几个同事踩过这个坑,咱们直接说干货解决办法:
为什么会报错?
你看到的错误提示已经点透了核心:SQL Server 2012的SSIS数据库(不管是msdb还是SSISDB)只认和自己版本完全一致的SSIS包。虽然你把VS2017项目的目标服务器版本设成了2012,但VS2017自带的SSDT用的是SQL Server 2017+的SSIS runtime,部署时还是会用高版本的工具去和低版本的SQL Server交互,版本校验直接失败。
靠谱的解决方案
方案1:换用匹配版本的SSDT(最稳妥)
这是根治问题的办法,因为版本完全对齐:
- 先卸载VS2017里的SQL Server Data Tools(SSDT)——注意,VS2017不支持适配SQL Server 2012的SSDT版本,必须换VS版本
- 安装Visual Studio 2015(社区版免费够用),然后安装专门适配SQL Server 2012的SSDT版本
- 用VS2015打开你的SSIS项目,确认项目属性里的「目标服务器版本」是SQL Server 2012,然后重新部署包模型到SQL Server 2012,这时候版本完全匹配,就不会再报那个错误了
方案2:用SQL Server 2012的命令行工具部署(不用换VS)
如果不想折腾换VS版本,可以试试这个曲线救国的方法:
- 在VS2017里右键你的SSIS项目 → 「生成部署包」,确保生成的包是针对SQL Server 2012的
- 找到生成的
.dtsx包文件(默认在项目的bin\Debug或bin\Release文件夹里) - 登录到SQL Server 2012的服务器,打开命令提示符,切换到SQL Server 2012的SSIS工具目录:
(110是SQL Server 2012的版本号,对应路径没错)cd "C:\Program Files\Microsoft SQL Server\110\DTS\Binn" - 执行
dtutil命令把包部署到msdb(包模型的默认存储位置):
执行完如果没有报错,就说明部署成功了dtutil /FILE "C:\你本地的包路径\你的包名.dtsx" /SQL "你的包名" /SERVER "你的SQL服务器实例名" /COPY SQL
方案3:检查项目部署配置细节
最后再确认几个容易忽略的点:
- 右键项目 → 属性 → 「配置属性」→ 「部署」,确保「目标服务器版本」确实是SQL Server 2012,别选错成更高版本了
- 部署时选择「SQL Server」作为目标,不要选「Integration Services Catalog」(虽然2012支持SSISDB,但包模型部署到msdb更稳妥,也避免版本冲突)
额外提醒
如果你的包用到了SQL Server 2012之后才出的SSIS组件(比如某些新的数据源、任务控件),哪怕部署成功了也会运行失败,记得先把这些组件换成2012支持的版本。
内容的提问来源于stack exchange,提问作者James Dean




