设置
我创建了一个表并用您的样本集的连续数据填充它
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 连接管理器,指向我制作上述表格的数据库。
我添加了一个 Foreach 项目枚举器,为项目枚举器配置了它,并将那里的列也定义为日期时间
我在它(多么笨拙的编辑器)中填充了如图所示的 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 并运行它。
您描述的设置效果很好。要么你的问题比陈述的要多,要么还有其他的错位。跟随我的复制并将其与您构建的内容进行比较,您应该会看到“关闭”的地方