我已向 SSIS 包添加了两个参数。 BeginDate 和 EndDate 被硬编码为 3/1/2024 和 3/31/2024。在相应的SQL Agent Job中,我可以看到包参数。我想通过 SQL 代理作业传递动态上个月开始和上个月结束参数,而不是硬编码日期,以便可以按每月计划运行,无需任何干预。如果需要,我可以暂时将日期更改为两个月的范围。我希望它默认为上个月开始和上个月结束 SQL 代理作业参数。
提前致谢。
如您所示运行 SSIS 包的 sql 代理作业不能像您想要的那样具有动态参数。
相反,您需要将作业类型从 Integration Services 更改为 TSQL,然后将参数动态化,然后运行 ssis 包。
脚本的内容将如下所示
DECLARE @execution_id bigint;
EXEC SSISDB.catalog.create_execution
@package_name = N'CheckMyBits.dtsx'
, @execution_id = @execution_id OUTPUT
, @folder_name = N'demo'
, @project_name = N'SO_Trash'
, @use32bitruntime = False
, @reference_id = NULL
, @runinscaleout = False;
SELECT
@execution_id;
DECLARE @var0 sql_variant = DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1);
EXEC SSISDB.catalog.set_execution_parameter_value
@execution_id
, @object_type = 20
, @parameter_name = N'start_date'
, @parameter_value = @var0;
DECLARE @var1 sql_variant = CAST(EOMONTH(GETDATE()) AS date);
EXEC SSISDB.catalog.set_execution_parameter_value
@execution_id
, @object_type = 20
, @parameter_name = N'end_date'
, @parameter_value = @var1;
DECLARE @var2 smallint = 1;
EXEC SSISDB.catalog.set_execution_parameter_value
@execution_id
, @object_type = 50
, @parameter_name = N'LOGGING_LEVEL'
, @parameter_value = @var2;
EXEC SSISDB.catalog.start_execution @execution_id;
您可以看到 @var0 和 @var1 正在获取当前月份的开始/结束日期,并将它们分配给我的包的参数
start_date
和 end_date