我有一个正在更新的包。该包由 Job Agent 作业执行。删除包并部署新版本后,我运行一个脚本来执行任何必要的 [create_environment]、[create_environment_reference]、[create_environment_variable] 和 [set_object_parameter_value] 语句。
但是,当我开始作业时,它会失败并显示以下错误消息(其中“n”是一个数字,它不会作为任何类型的 id 出现在任何相关的 SSISDB 表或视图中):
环境引用 n 与项目无关
原因是执行包的现有作业步骤在命令行中包含 /ENVREFERENCE 开关,并且必须为新版本的包更新该值。
这并不明显,因为使用 SSMS 查看作业步骤不会在任何地方显示此开关。我发现解决此问题的唯一方法是编写一个 drop 并创建作业的脚本,使用如下代码获取正确的 reference_id:
然后使用新编号更新对 sp_add_jobstep 的调用的 @command 参数。
有用的参考资料(您不会通过搜索错误消息找到):
旧帖子,但可以帮助他人,可能是一个解决方案:当 SSIS 包从作业执行时,它将使用 SSIS 项目目录上设置的引用。
再次部署 SSIS 项目时,此引用将丢失,您需要在 SSIS 目录中重置它们。
在 SSMS > 连接实例 > 打开树集成服务目录 > SSIDB > 项目 > 右键单击包含在 SQL 代理作业中执行的包的项目 > 单击配置 > 单击参考
参考还在吗?如果没有再添加。您还可以将此脚本作为部署后的 sqlscript..
您可以使用以下脚本创建引用、环境变量和与参数的关联:
如果您在创建代理作业之前执行此操作,则可以在您的代理作业创建命令文本中使用环境参考 ID。