【问题标题】:SSIS - Intermittent error "Conversion failed because the data value overflowed the specified type."SSIS - 间歇性错误“转换失败,因为数据值溢出了指定的类型。”
【发布时间】:2014-12-31 11:22:09
【问题描述】:

我有一个 SSIS 包,它间歇性地失败并出现一些错误,其中两个信息最丰富的是:

DFT_Play总结 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_Play总结 输入“OLE DB 目标输入”(2121) 上的输入列“dtCreated”(2129) 出现错误。返回的列状态为:“转换失败,因为数据值溢出了指定的类型。”。**

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

现在,我了解了错误消息的基本含义,但我无法理解数据或转换如何在包中无效,而在源头上已被视为无效。

奇怪的是,在某些日子包会因为这个错误而失败,重新启动(根据包设置)然后在没有任何人工干预的情况下成功。

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

【问题讨论】:

  • 也许您正试图将您的 SQL 日期时间放入一个过于有限的 SSIS 数据类型,例如 DT_DBTIMESTAMP。您对 dtCreated 使用什么 SSIS 数据类型?看看这是否有帮助:msdn.microsoft.com/en-us/library/ms141036(v=sql.105).aspx
  • 嗨,Tab,我正在使用 DT_DBTIMESTAMP,但除非我遗漏了什么,否则我不确定为什么对于 SQL 日期时间来说这太有限了?根据您提供的链接,DT_DBTIMESTAMP 是“由年、月、日、小时、分钟、秒和小数秒组成的时间戳结构。小数秒的固定比例为 3 位。
  • 我知道,但文章也这样说:“另一方面,DT_DBTIMESTAMP 由内部具有年、月、日、小时、分钟、秒和毫秒的单独字段的结构表示. 这种数据类型对它可以呈现的日期范围有更大的限制。” “更大的限制”这个短语是......令人困惑,它意味着更多的限制,还是更宽容?乍一看,我以为它的意思是“更有限”,但现在我不太确定了。
  • 我认为这意味着,与 DB_DATE(只能保存 1899 年 12 月 30 日的值)相比,DT_DBTIMESTAMP 支持和可存储的日期范围要大得多,因为它具有单独的组件字段。类似于 SQL SMALLDATETIME 可以保存从 1/1/1900 到 6/6/2079 的值,而 DATETIME 的范围可以从 1/1/1753 到 31/12/9999。我已经设置了一些批量插入,然后是逐行插入,以尝试捕获违规行,所以我会看看这是否能说明问题。
  • 嗯,这就是我所追求的,无论您使用的 SSIS 数据类型对您的数据来说是否过于有限,但第三个想法,我认为您的解释可能是正确的,并且您使用的限制最少(DT_DBTIMESTAMP2 除外)选项,这应该不是问题。

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


【解决方案1】:

您可以尝试两种选择,

  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

【讨论】:

    猜你喜欢
    • 2019-06-15
    • 1970-01-01
    • 2017-03-13
    • 1970-01-01
    • 1970-01-01
    • 2013-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多