2016-01-12 49 views
2

我有一個變量表達式,它在兩個單獨的任務中附加一些日期部分以用作文件名。SSIS:在兩個地方使用時間的變量表達式

但是到了第二個任務命中時,時間已經改變了,並且它的變量也隨之變化。基本上,我正在FTP文件夾中創建一個文件來導出。但是當FTP任務去撿起它時,它就不存在了,因爲從最初創建文件和FTP任務嘗試提取它以來時間已經改變了。

平面文件name和FTP LocalPath使用變量「文件路徑」,這是兩個:

"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和從那裏使用它不變?

回答

3

請勿使用GETDATE(),因爲每次檢查時都會對其進行評估。

取而代之的是,在SSIS包持續時間內選擇一個不變的值,但在包開始時更新。我的首選是@[System::StartTime],但有些人可能更喜歡@[System::ContainerStartTime]前者在包開始執行時設置,另一個在每個容器內重置(ForEach Loop等)