2010-08-04 40 views
0

我目前正在使用SSIS包來從多個服務器/文件源將大型機日誌加載到數據庫中。SSIS 2005平面文件源 - 實際上不是部分行的部分行

由於它矗立在那一刻我使用foreach循環容器遍歷包含文件名的記錄,並使用Data Flow任務從通過派生列Flat File SourceFile連接到OLE DB Destination載入的文件。

我在Data Flow任務中構建了錯誤處理,以允許在指定的位置不會總是存在日誌文件(即因爲服務器在特定時間段內因爲維護而關閉了,文件每小時生成一次),但問題在處理完這些錯誤後開始。

如果在試圖加載未找到的文件時立即存在文件,它會開始加載它,但會引發以下警告消息:[Message Log File Source (NORDXSL) [57]] Warning: There is a partial row at the end of the file.,並且不加載該文件中的所有記錄。但是,當我從記錄集中刪除我不知道的文件(因此它只會嘗試加載確實存在的文件,包括具有所謂的「部分行」的文件),一切正常,所有文件/行加載沒有問題。它似乎不想正確地加載第一個文件失敗後丟失的文件,我不能爲我的生活工作爲什麼?

Data Flow任務完成處理後,我已經試過在文件連接上調用Dispose()ReleaseConnection(),但這並沒有什麼區別,我現在完全沒有想法。

任何幫助將非常感謝,因爲這是這個項目中的最後一個bug,我想把它弄出來。請!!

謝謝, 詹姆斯

回答

0

現在我已經找到了此問題的方法...

我的數據流任務前添加一個腳本任務加載檢查,看看如果文件我想讀的文件存在:

如果(System.IO.File.Exists(Dts.Variables( 「MQLogMessagePath」)Value.ToString))然後 Dts.TaskResult = Dts.Results.Success 否則 Dts.TaskResult = Dts.Results.Failure End If

如果它不存在,它將失敗Foreach循環容器的迭代並繼續到下一個文件。

BINGO!