执行包含在 SQL 任务中使用的变量的 SSIS 包

问题描述 投票:0回答:1

我正在尝试执行 SSIS 包,其持续时间小于 SSIS 包

USE SSISDB;

DECLARE @execution_id BIGINT
EXEC [SSISDB].[catalog].[create_execution] 
    @package_name=N'PackageName.dtsx',
    @folder_name=N'Projects',
    @project_name=N'ProjectName',
    @use32bitruntime=False,
    @reference_id=Null,
    @execution_id=@execution_id OUTPUT

--SELECT @execution_id

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

/*  Attempt to use a variable to execute in the SQL as a parameter */
EXEC [SSISDB].[catalog].[set_execution_parameter_value] 
      @execution_id,
      @object_type=20,
      @parameter_name=N'RunDuration', 
      @parameter_value=10080 /*1 week*/

EXEC [SSISDB].[catalog].[start_execution] @execution_id
GO

我在 SSIS 包中有一个名为 User::Duration 的变量

我有一个 SQL 任务,我想在 SQL 命令中使用此输入:

SQL语句

参数映射

DECLARE @DURATION SMALLINT;  /* I think the variable would go here as an "= ?" but I am not sure of the rest 
/* Need to research how to make @Duration a variable of the SSIS package. */

DECLARE @TIME DATETIME = DATEADD(mi,-@DURATION,GETDATE()); 

一旦我设置了“@TIME”,其余的脚本就会起作用。

我尝试让变量运行,但它似乎没有设置 @DURATION 并且 SSIS 包失败。

我希望获得计划任务>正确的SSIS执行脚本(希望我很接近)>包含输入数字的SSIS包变量>输入的数字能够在SQL任务、sql命令中使用。

variables ssis
1个回答
0
投票

使用包参数代替变量:https://learn.microsoft.com/en-us/sql/integration-services/integration-services-ssis-package-and-project-parameters?view=sql-服务器版本16

  1. 创建包参数: enter image description here
  2. 更改 sql 任务以使用参数而不是变量: enter image description here

然后你上面的sql运行包并设置参数应该可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.