如何使用具有不同日期值的相同 SSIS 数据流?

How to use the same SSIS Data Flow with different Date Values?

我有一个非常简单的 SSIS 包,其中包含一个数据流,该数据流由一个 OLEDB 源和一个平面文件目标组成。 OLEDB 源代码调用一个带有 2 组参数的查询。我已将参数映射到 Date/Time 个变量。

我想知道如何最好地将 4 组不同的日期传递给变量并在我的查询中使用这些值?

我已经使用项目枚举器对 For Each 循环容器进行了试验。但是,这似乎不起作用,并且程序包抛出 System.IO.IOException 错误。

我的容器配置如下: 请注意,这两个变量都是 Date/Time 数据类型。

如何将 4 个单独的值集传递给相同的变量并将每个变量对用于 运行 我的数据流?

设置

我创建了一个 table 并用您的样本集的连续数据填充了它

DROP TABLE IF EXISTS dbo.SO_67439692;
CREATE TABLE dbo.SO_67439692
(
    SurrogateKey int IDENTITY(1,1) NOT NULL
,   ActionDate date
);

INSERT INTO
    dbo.SO_67439692
(
    ActionDate
)
SELECT
    TOP (DATEDIFF(DAY, '2017-12-31', '2021-04-30'))
    DATEADD(DAY, ROW_NUMBER() OVER (ORDER BY (SELECT NULL)), '2017-12-31') AS ActionDate
FROM
    sys.all_columns AS AC;

在我的 SSIS 包中,我添加了两个日期时间类型的变量,startDate 和 endDAte2018。我添加了一个 OLE DB 连接管理器,指向我在其中创建上述 tables.

的数据库

我添加了一个 Foreach 项目枚举器,为项目枚举器配置了它,并将那里的列也定义为日期时间

我用 运行ges 从 2018 年到 2020 年和 2021-01-01 到 2021-04-30 填充它(多么笨拙的编辑器)。

我按照问题定义中所示连接变量,运行按原样进行。没有报告 IO 错误。

一旦我知道我的 foreach 容器正在工作,数据流就变得微不足道了。

我使用像这样的参数化查询在带有 OLE DB 源的 foreach 循环中添加了数据流

DECLARE @StartDate date, @EndDate date;
SELECT  @StartDate = ?, @EndDate = ?;

SELECT *
FROM
    dbo.SO_67439692 AS S
WHERE
    S.ActionDate >= @StartDate AND S.ActionDate <= @EndDate;

我将我的两个变量映射为参数名称 0 和 1 并且 运行 它。

您描述的设置效果很好。要么你的问题比陈述的要多,要么有其他地方错位了。跟随我的重现并将它与你构建的进行比较,你应该看到哪里有问题