0

我创建了一个由连接到 SCD 的 OLE DB 源组成的 SSIS 包。在 SCD 中,我勾选了我选择的“使用开始日期和结束日期来识别当前和过期记录”的单选按钮

开始日期列:RecordStartDate 结束日期列:RecordEndDate

设置日期值的变量:System::CreationDate

如果我今天(2013 年 11 月 5 日)运行 ETL,并在运行 ETL 后检查目标表。RecordStartDate 使用我创建 SSIS 包的日期(2013 年 10 月 18 日)。包不应该使用 ETL 运行的日期吗?如我错了请纠正我。

4

3 回答 3

0
System::CreationDate - The date that the package was created.

包不应该使用 ETL 运行的日期吗?

不,包应该使用创建包的日期。

SQL Server Integration Services 系统变量

于 2013-11-05T07:22:46.180 回答
0

维度向导提供了可供您使用的变量选择。默认情况下,包开发者可以选择使用以下之一

System::StartTime
System::CreationDate
System::ContainerStartTime

(您可以使用您自己的变量来扩充此列表,该变量可以从表达式等中预设)

如果要为此列使用 StartTime,则只需更改包中适当的派生列转换。

于 2016-05-18T07:46:47.753 回答
0

如果您决定使用 System::StartTime,在创建的转换中,您将获得 2 个派生列转换(一个用于 ValidTo,第二个用于 ValidFrom)更新表达式以匹配您所需的数据类型,例如,假设在数据库中,您的列类型是“日期”。(DT_DBDATE)(@[System::StartTime])。请注意,它可能会导致错误:0xC0202009 到数据流任务,插入目标 [61]:错误代码 SSIS DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80004005。

于 2018-05-10T11:54:04.953 回答