You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSIS包在开发机正常,部署至SQL Server 2014后脚本任务未执行求助

排查SSIS包在SQL Server 2014上脚本任务未执行的问题

看起来你遇到的是典型的SSIS跨环境兼容性+配置问题,我帮你梳理几个最可能的原因和对应的解决步骤:

1. 包版本兼容性不匹配

VS2015默认安装的SSDT如果没针对SQL Server 2014配置,创建的包默认是SQL Server 2016/2017版本格式,而SQL Server 2014仅兼容TargetServerVersion为2014的包。虽然dtsx文件能复制到服务器,但低版本运行时可能无法正确解析高版本包的逻辑细节(比如脚本任务的编译信息)。

解决方法:

  • 在VS2015中打开你的SSIS包,右键点击包 → 选择Properties
  • 在属性窗口找到TargetServerVersion,修改为SQL Server 2014
  • 重新保存包后,再复制到服务器运行测试

2. 脚本任务的.NET Framework版本不兼容

SSIS 2014的脚本任务仅支持**.NET Framework 4.0**,而VS2015默认会用更高版本的.NET(比如4.5及以上)编译脚本。这种情况下,服务器上的SSIS运行时无法加载脚本程序集,导致脚本任务被静默跳过。

解决方法:

  • 打开脚本任务编辑器,点击Edit Script进入脚本开发环境
  • 在脚本项目的属性中,找到Target Framework,修改为**.NET Framework 4**
  • 重新编译脚本(Ctrl+Shift+B),关闭脚本编辑器后保存包,再部署到服务器

3. 执行账户权限不足

服务器上运行SSIS包的账户(比如SQL Server代理服务账户,或你手动执行时用的账户)可能没有足够权限执行脚本任务。哪怕你的脚本只是输出日志,权限不足也可能被SSIS运行时拦截。

解决方法:

  • 如果用SQL Server代理执行,检查代理作业的运行身份,确保该账户拥有db_ssisadmin或db_ssisoperator角色权限,同时具备访问SSIS目录(若使用SSISDB)的权限
  • 如果手动执行,尝试用服务器管理员账户运行包,验证是否能触发脚本任务

4. 日志配置未启用信息级别输出

你看到“除验证状态外无其他输出”,可能是因为服务器上的包日志未启用Information级别的事件捕获,而FireInformation输出的是信息级日志,默认可能没被记录。

解决方法:

  • 执行包时打开日志配置,确保勾选了OnInformation事件
  • 如果通过SQL Server代理执行,在作业步骤的“高级”选项卡中,设置日志级别为详细,这样就能捕获到脚本任务的输出信息

5. Foreach循环的结果集映射错误

虽然显示“结果集已写入1行”,但Foreach循环可能未正确映射结果集变量,导致循环没有实际触发迭代,脚本任务自然不会执行。

解决方法:

  • 打开Foreach循环编辑器,确认Enumerator选择的是Foreach ADO Enumerator
  • 检查ADO object source variable是否正确指向存储结果集的变量
  • 切换到Variable Mappings选项卡,确保结果集的列已正确映射到对应变量(哪怕脚本任务没用到这些变量,映射是触发循环的前提)

建议先从版本兼容性和.NET版本这两个最常见的问题入手排查,应该能解决大部分类似情况。

内容的提问来源于stack exchange,提问作者Tomas H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:17:17