首页 > 解决方案 > 由于超时,集成服务同步运行包失败

问题描述

我正在尝试使用 create execution 命令从存储过程执行 SSIS 包,但我需要知道包何时完成其工作,因此您使用 SYNCHRONIZED 参数,问题是运行 ot 作为 SYNCHRONIZED 失败并出现超时和状态30 秒后出现“意外终止”,但是当我运行 UNSYNCHRONIZED 时一切正常,请您帮忙。

这是我的程序:

ALTER procedure [dbo].[sp_upload] 
as
begin
declare @execution_id bigint
EXEC [SSISDB].[catalog].[create_execution] @package_name=N'Package.dtsx',
    @execution_id=@execution_id OUTPUT,
    @folder_name=N'Folder',
    @project_name=N'Project',
    @use32bitruntime=False,
    @reference_id=Null

DECLARE @var0 smallint = 1
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id,
      @object_type=50,
      @parameter_name=N'LOGGING_LEVEL',
      @parameter_value=@var0
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id,  
      @object_type=50, 
      @parameter_name=N'SYNCHRONIZED', 
      @parameter_value=1
EXEC [SSISDB].[catalog].[start_execution] @execution_id
Select @execution_id
end

当我使用参数 N'SYNCHRONIZED value = 0 运行它时,它运行正常,但如果我将其更改为 1,它会在 30 秒后超时并失败。

我需要它是同步的,因为我需要在报告执行 ID 之前知道包何时完成其工作。

谢谢

标签: ssistimeout

解决方案


这不是错误的包执行,而是您的使用。

假设包需要 45 秒才能运行。您已在过程中将 Synchronized 设置为 true 并从 SSMS 运行它。45秒后,完成。

相同的设置,但现在您从 .net 应用程序运行它。30 秒内,繁荣,超时坏事发生。发生的事情是30 秒的默认命令超时正在打击你。

SqlCommand command = new SqlCommand();
// Change execution timeout to 50 seconds to ensure our 45 second process runs
command.CommandTimeout = 50;
command.CommandType = CommandType.Text;
command.Text = "EXECUTE dbo.sp_upload";

推荐阅读