SSIS:在两个地方使用时间的变量表达式

时间:2016-01-12 22:14:52

标签: ssis

我有一个变量表达式,它附加一些日期部分,用作两个独立任务中的文件名。

但是当第二个任务命中时,时间已经改变,变量也随之改变。基本上,我在FTP导出文件夹中创建一个文件。但是,当FTP任务开始捡起来时,它就没有了#39;因为自文件的初始创建和FTP任务试图获取它以来时间已经改变。

平面文件name和FTP LocalPath都使用变量' FilePath'这是:

"C:\\WFSDEV_WSD_SHIP_FROM_STORE_" + (DT_WSTR,4)DATEPART("yyyy",GetDate()) + 
RIGHT("0" + (DT_WSTR,2)DATEPART("mm",GetDate()) ,2) + 
RIGHT("0" + (DT_WSTR,2)DATEPART("dd",GetDate()),2) +
RIGHT("0" + (DT_WSTR,2)DATEPART("hh",GetDate()),2) +
RIGHT("0" + (DT_WSTR,2)DATEPART("mm",GetDate()),2) +
RIGHT("0" + (DT_WSTR,2)DATEPART()),2) +
".VD01"

screenshot1

有没有办法在包的开头设置这个var并从那里使用它?

1 个答案:

答案 0 :(得分:4)

请勿使用GETDATE(),因为每次检查都会对其进行评估。

相反,选择一个在SSIS包持续时间内保持不变的值,但在包开始时更新。我的偏好是@[System::StartTime],但有些人可能更喜欢@[System::ContainerStartTime]前者在包开始执行时设置,另一个在每个容器内重置(ForEach循环等)