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

问题描述 投票:1回答:1

我有一个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目标输入”(2121)上的输入列“dtCreated”(2129)出错。返回的列状态为:“转换失败,因为数据值溢出指定的类型。”。**

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

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

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

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

sql-server sql-server-2008 ssis type-conversion
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.