我创建了一个由连接到 SCD 的 OLE DB 源组成的 SSIS 包。在SCD内部,我勾选了"使用开始和结束日期来识别当前和过期记录"的单选按钮,我选择了
"开始日期"列:"记录开始日期"结束日期"列:"记录结束日期"
变量来设置日期值:系统::创建日期
如果我今天(2013 年 11 月 5 日)运行 ETL 并在运行 ETL 后检查目标表。记录开始日期使用我创建 SSIS 包的日期(2013 年 10 月 18 日)。包不应该使用 ETL 运行的日期吗?如果我错了,请纠正我。
System::CreationDate - The date that the package was created.
包不应该使用 ETL 运行的日期吗?
否,包应使用创建包的日期。
SQL Server Integration Services 系统变量
维度向导提供了可供您使用的变量选项。默认情况下,包开发人员可以选择使用以下方法之一
System::StartTime
System::CreationDate
System::ContainerStartTime
(您可以使用自己的变量来扩充此列表,这些变量可以从表达式等中预设)
如果要对此列使用 StartTime,则只需更改包中的相应派生列转换。
如果您决定使用 System::StartTime,则在创建的转换中,您将获得 2 个派生列转换(一个用于 ValidTo,第二个用于 ValidFrom)更新表达式以匹配所需的数据类型,例如,假设在数据库中,您的列类型为"date"。(DT_DBDATE)(@[系统::开始时间])。请注意,这可能会导致错误:0xC0202009数据流任务,插入目标 [61]:错误代码 SSIS DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80004005。