SSIS 2012:环境引用 n 与项目无关

Mar*_*man 7 ssis-2012

我有一个要更新的软件包。该包由作业代理作业执行。删除包然后部署新版本后,我运行一个脚本来执行任何必要的 [create_environment]、[create_environment_reference]、[create_environment_variable] 和 [set_object_parameter_value] 语句。

但是,当我开始工作时,它失败并显示以下错误消息(其中“n”是一个数字,它没有出现在任何相关的 SSISDB 表或视图中作为任何类型的 id):

环境引用 n 与项目无关

Mar*_*man 12

其原因是执行包的现有作业步骤在命令行中包含 /ENVREFERENCE 开关,并且必须为包的新版本更新该值。

这并不明显,因为使用 SSMS 查看作业步骤不会在任何地方显示此开关。我发现解决此问题的唯一方法是编写一个 drop 并创建作业,使用如下代码获取正确的 reference_id:

SELECT  reference_id
  FROM  SSISDB.[catalog].environment_references er
        JOIN SSISDB.[catalog].projects p ON p.project_id = er.project_id
 WHERE  er.environment_name = @Environment
   AND  p.name              = @ProjectName;
Run Code Online (Sandbox Code Playgroud)

然后使用新号码更新对 sp_add_jobstep 调用的 @command 参数。

有用的参考资料(您无法通过搜索错误消息找到):