You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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版本,可以试试这个曲线救国的方法:

  1. 在VS2017里右键你的SSIS项目 → 「生成部署包」,确保生成的包是针对SQL Server 2012的
  2. 找到生成的.dtsx包文件(默认在项目的bin\Debugbin\Release文件夹里)
  3. 登录到SQL Server 2012的服务器,打开命令提示符,切换到SQL Server 2012的SSIS工具目录:
    cd "C:\Program Files\Microsoft SQL Server\110\DTS\Binn"
    
    (110是SQL Server 2012的版本号,对应路径没错)
  4. 执行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

火山引擎 最新活动