我有一个变量表达式,它附加一些日期部分,用作两个独立任务中的文件名。
但是当第二个任务命中时,时间已经改变,变量也随之改变。基本上,我在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"
有没有办法在包的开头设置这个var并从那里使用它?
答案 0 :(得分:4)
请勿使用GETDATE()
,因为每次检查都会对其进行评估。
相反,选择一个在SSIS包持续时间内保持不变的值,但在包开始时更新。我的偏好是@[System::StartTime]
,但有些人可能更喜欢@[System::ContainerStartTime]
前者在包开始执行时设置,另一个在每个容器内重置(ForEach循环等)