我是新来的SSIS/SQL所以下面命名的引用可能是不正确的,但我希望传达的问题获取回报/退出代码
调度工具,我的要点在SQL 2012中使用执行已部署的SSIS包时,此工具需要指示SSIS包何时失败,然后停止运行任何后续预定作业。
该项目在SQL 2012中使用SSIS项目部署模型。部署的SSIS包然后由第三方调度工具调用。在SSIS目录中,我们使用Execute选项生成一个SQL脚本以传递给调度器。编辑此脚本以添加参数以确保作业以SYNSCHRONOUSLY形式运行(即,调用者一直等待直到作业完成)。 SQL脚本从计划工具运行,并且只会在完成时移动到下一个作业。
问题是当SSIS包失败时,调度工具没有收到返回码。如果SSIS包失败,它包含捕获和发送错误通知电子邮件的步骤,因此我们确实有失败的观点。但是,无论作业是否成功完成,也会运行调度流程中的所有依赖作业。是否有一个参数来强制返回代码发送到第三方调度工具?脚本的
实施例被用来执行该程序包:
*Declare @execution_id bigint
EXEC [SSISDB].[catalog].[create_execution] @package_name=N'Extract_Job.dtsx', @[email protected]_id OUTPUT, @folder_name=N'ETL', @project_name=N'ETL', @use32bitruntime=False, @reference_id=Null
Select @execution_id
DECLARE @var0 smallint = 1
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=50, @parameter_name=N'LOGGING_LEVEL', @[email protected]
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=50, @parameter_name=N'SYNCHRONIZED', @parameter_value= 1; -- turn on synchronized execution
EXEC [SSISDB].[catalog].[start_execution] @execution_id
GO*
观光我试图
- 使用DTSEXEC命令。但是这不会发送返回代码,并且同步运行,并且需要同步运行
- 第三方调度程序具有SSIS目录的插件,但有一个未解决的错误,因此无法在当前版本上工作
只是好奇。我试图决定走哪条路。你有没有证据表明DTExec比“start_execution”过程更稳定? – 2016-04-27 15:47:10
我不能评论DTEXEC是否更稳定,因为需要使用第三方调度工具,我正在使用DTEXEC。如果您使用SQL代理,我认为使用Start_execution过程是有意义的。 – Peffa 2016-06-13 19:21:28