2013-04-06 95 views
2

在我的ssis包中,我在順序容器中有數據流任務。 OLEDB是Source和Flat文件是Destination。 我已經給出了平面文件位置的變量(@ [User :: strUnknownFileLocation])。也爲平面文件的名稱我添加了一個變量(@ [User :: StrUnknownFileName])。數據流任務完成後,我發送郵件任務。我在發送郵件任務中將該文件作爲附件附加。用SSIS包中的附件發送郵件任務

這是我在我的文件名變量(@ [User :: StrUnknownFileName])中計算的表達式。我已經將它設置爲「屬性中的評估表達式爲真」。

"UnknownValue_"+ (DT_STR,4,1252)YEAR(getdate()) +(MONTH(getdate()) < 10 ? "0" : "")+ (DT_STR,4,1252)MONTH(getdate()) +(DAY(getdate()) < 10 ? "0" : "") + (DT_STR,4,1252)DAY(getdate()) + ".txt" 

這是我的平面文件連接屬性表達--Connection串

@[User::strUnknownFileLocation]+ @[User::StrUnknownFileName] 

這是我的平面文件連接屬性表達

可變的文件位置我沒有任何表達。我在變

(@[User::strUnknownFileLocation]). 

像中號添加位置的值:\ ETL \ TMP \ 在發送郵件的任務,我有附件的附件和表達被賦予這樣的,

@[User::strUnknownFileLocation]+ @[User::StrUnknownFileName] 

我跑這個包昨天很好。它將一個文件附加爲UnknownValue_20130405.txt。 但是,當我今天打開軟件包時,發送郵件任務時發生錯誤。當我點擊錯誤,它說它找不到文件UnknownValue_20130406.txt或我沒有權限打開該位置。它有點奇怪。

因此,我執行DFT任務。所以文件生成了。然後它的工作原理是因爲文件存在。那麼爲什麼它不在首位。所以現在明天當我打開我的包並嘗試運行時,它不會運行,因爲那天沒有文件?但是,如果我去運行只有DFT任務它將生成一個平面文件,它將在該位置有一個平面文件。但這不是應該如此。

有什麼我做錯了嗎?我無法理解這一點。任何幫助將非常感激。

在此先感謝。

回答

2

我相信你遇到了一個問題,因爲作爲預執行階段的一部分,SSIS驗證它需要的所有資源都可用。在新的一天中,該文件在軟件包運行之後纔可用。

爲了解決這個問題,你可以告訴你SSIS在驗證它之前等待它真正需要使用資源。在SSIS中的任何元素上,它應該有一個DelayValidation屬性,默認情況下它被設置爲False。在「發送郵件任務」中將值設置爲True