如何解决由于超时,Integration Services 同步运行包失败
我正在尝试使用 create execution 命令从存储过程执行 SSIS 包,但我需要知道包何时完成其工作,以便使用 SYNCHRONIZED 参数,问题是运行 ot as 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,@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 之前知道包何时完成其工作。
谢谢
解决方法
这里的错误不是包执行,而是您的使用。
假设程序包运行需要 45 秒。您已在程序中将 Synchronized 设置为 true 并从 SSMS 运行它。 45 秒后,完成。
相同的设置,但现在您可以从 .net 应用程序运行它。 30 秒后,繁荣,超时,坏事发生了。发生的事情是 default command timeout of 30 seconds 正在击中您。
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";
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。