SSIS - 间歇性错误“转换失败,因为数据值溢出指定的类型。”

时间:2014-12-31 11:22:10

标签: sql-server sql-server-2008 ssis type-conversion

我有一个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   输入列出现错误" dtCreated" (2129)on input" OLE DB Destination Input" (2121)。返回的列状态为:"转换失败,因为数据值溢出指定的类型。"。**

源和目标数据库都是SQL Server 2008 R2。源和目标中的列dtCreated是DATETIME(非空)。

现在,我了解错误消息所说的内容,但我无法理解数据包或转换在包中是否无效,而不会在源头被视为无效。

奇怪的是,在某些日子里,程序包将因此错误而失败,重新启动(根据程序包设置),然后在没有任何手动干预的情况下成功。

关于我应该在可能导致此问题的程序包步骤中寻找什么的指示?数据流任务本身由几个OLE DB源组成,每个源都有一个派生列,然后合并这些数据集,然后根据dtCompleted值对各种OLE DB目标进行条件分割。

1 个答案:

答案 0 :(得分:0)

您可以尝试两种选择,

  1. 在数据流任务中使用数据转换来转换必要的值。
  2. 如果您的列可用,请在派生列本身中设置特定数据类型。
  3. 当这种类型的错误发生时,数据转换很方便。

    应正确使用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