2014-12-31 45 views
0

我有一個SSIS包間歇性地失敗,錯誤了一把,兩個最翔實,其中有:SSIS - 間歇性錯誤「轉換失敗,因爲數據值溢出了指定的類型。」

DFT_PlaySummary SSIS錯誤代碼DTS_E_OLEDBERROR。發生了OLE DB錯誤。錯誤代碼:0x80004005。 OLE DB記錄可用。源:「Microsoft SQL Server Native Client 10.0」Hresult:0x80004005描述:「無效的日期格式」。 OLE DB記錄可用。源:「Microsoft SQL Server Native Client 10.0」Hresult:0x80004005描述:「日期格式無效」。**

DFT_PlaySummary 輸入「OLE DB Destination Input」輸入列「dtCreated」(2129) (2121)。返回的列狀態是:「轉換失敗,因爲數據值溢出指定的類型。」**

源和目標數據庫都是SQL Server 2008 R2。源和目標中的dtCreated列都是DATETIME(NOT NULL)。

現在,我理解錯誤消息的內容,但我無法理解數據或轉換如何在源文件中被視爲無效的情況下在包中無效。

奇怪的是,在某些日子裏,軟件包將失敗並出現此錯誤,重新啓動(根據軟件包設置),然後成功,無需任何手動干預。

任何指針,我應該在包的步驟,可能會導致此?數據流任務本身由幾個OLE DB源組成,每個源都有一個派生列,然後合併這些數據集,然後根據dtCompleted值對各個OLE DB目標進行條件分割。

+0

也許你正試圖把你的SQL日期時間爲SSIS數據類型,它是太有限了,像DT_DBTIMESTAMP。 dtCreated使用了什麼SSIS數據類型?看看是否有幫助:http://msdn.microsoft.com/en-us/library/ms141036(v=sql.105).aspx –

+0

嗨Tab,我正在使用DT_DBTIMESTAMP,雖然除非我失去了一些東西, m不知道爲什麼這對SQL日期時間太有限了?按照您提供的鏈接,DT_DBTIMESTAMP是'時間戳結構,包含年,月,日,小時,分鐘,秒和小數秒。小數秒的固定比例爲3位'。 – KingTen87

+0

我知道,但文章也這樣說:「另一方面,DT_DBTIMESTAMP由內部具有年,月,日,小時,分鐘,秒和毫秒的單個字段的結構表示。該數據類型具有較大的限制在它可以呈現的日期範圍內。「 「更大的限制」一詞是..令人困惑,這是否意味着更有限,或更寬容?乍一看,我認爲這意味着「更有限」,但現在我不太確定。 –

回答

0

兩個選項,你可以試試,

  1. 使用數據轉換在數據流任務所需的值轉換。
  2. 如果您的列在其中可用,請在派生列中設置特定的數據類型。

當這種類型的錯誤通常發生時,數據轉換很方便。

SSIS日期時間格式應正確使用。以下文章明確說明差異。使用正確的格式,這是你需要的。

http://consultingblogs.emc.com/jamiethomson/archive/2005/11/15/SSIS_3A00_-What_2700_s-the-difference-between-DT_5F00_DATE-and-DT_5F00_DBTIMESTAMP.aspx

相關問題