我想更改2个日期项目变量StartDateTime和EndDateTime。我有另一个名为RunType的变量。很简单,我想先读取值RunType。如果将其设置为“ Incremental”,那么我想将StartDate从昨天的内容更改为12:00:00 AM,将EndDate的内容更改为昨天的11:59:59 PM。我尝试写回值所得到的错误似乎表明写在项目级变量上。这是真的吗?或者在处理这些项目级别的变量时我需要做些不同的事情吗?我想到了创建程序包级别变量,控制表,等等……这似乎有些过头了。
当我通过更改集成服务目录/环境下的参数值来手动测试软件包时,我得到了期望的范围。该软件包将通过sql agent job运行。我可以创建并执行一个sis-sis步骤来完成ssis之外的这个简单任务吗?
最佳答案
尽管这些值可以存储在internal.object_parameters中,但要避免直接在这些表中编辑这些值的诱惑。而是使用提供的方法进行操作。在这种情况下,存储过程为catalog.set_environment_variable_value。
下面是如何以编程方式更改环境变量的值的示例。我认为这是SQL Agent作业中的TSQL作业步骤,该步骤在启动程序包之前运行,以确保正确设置StartDateTime和EndDateTime的值。
DECLARE @var sql_variant;
DECLARE
@StartDateTime date
, @EndDateTime datetime
, @RunType bit = 1;
SELECT
@StartDateTime = CAST(dateadd(d, -1, CURRENT_TIMESTAMP) AS date)
, @EndDateTime = DATEADD(s, -1, cast(cast(current_timestamp AS date) AS datetime))
SELECT @StartDateTime, @EndDateTime;
IF (@RunType = 1)
BEGIN
SET @var = @StartDateTime;
EXECUTE [SSISDB].[catalog].[set_environment_variable_value]
@variable_name=N'StartDateTime'
, @environment_name=N'MyEnvironmentName'
, @folder_name=N'MyFolder'
, @value=@var;
SET @var = @EndDateTime;
EXECUTE [SSISDB].[catalog].[set_environment_variable_value]
@variable_name=N'EndDateTime'
, @environment_name=N'MyEnvironmentName'
, @folder_name=N'MyFolder'
, @value=@var;
END
ELSE
BEGIN
PRINT 'Logic goes here to handle the other conditions for RunType'
END
关于ssis - SSIS 2012:如何更改项目的环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17098239/