"转换失败,因为数据值溢出指定的类型"错误仅适用于同一个表的一列

时间:2016-10-31 19:28:13

标签: sql-server date ssis sql-server-2012 data-conversion

我正在尝试将数据从数据库访问文件导入SQL Server。为此,我通过SQL Server导入/导出向导创建了SSIS包。当我通过执行包实用程序执行包时,所有表都通过了验证"验证没有执行"选项已选中。但是,在执行过程中,我收到了以下大块错误(使用图片,因为blockquote占用了大量空间):

Errors

经过调查,我发现了正确的表格和列,这导致了问题。然而,这是我几天来一直试图解决的问题,而且我对可能的选择感到沮丧。

故障表列的结构

如错误列表所示,在返回日期列的RHF修复表中会出现问题。在Access中,相关列是日期/时间类型。在实际的表格中,所有输入都是“mmddyy”的形式,当点击它时,变成' mm / dd / yyyy'格式:

Input for March 8, 2004

在SSIS包中,它创建了OLEDB源/目标关系,如下所示:

Relationship in SSIS

在这个关系中,在输出列和外部列中,数据类型是DT_DATE(我仍然认为这是我的问题的一个关键原因)。最让我烦恼的是,与Date Returned列相邻的列与我上面描述的完全相同,并且没有任何错误应用于它或同一类型的任何其他列,Date Returned实际上是唯一的黑羊。涌向。

我尝试了什么

我已尝试过以下thread中的所有选项,错误仍然相同。

我尝试了数据转换选项,尝试将此列转换为datestamp甚至是unicode字符串。它没有用。

Data Conversion

我尝试使用高级源编辑器为datestamp / unicode字符串指定数据类型。我尝试仅在输出列中指定它,在外部和输出列中尝试,结果相同。

翻阅访问表中的数据也没有给我任何东西。所有这些都使用相同的6-char格式。

在这一点上,我完全忘记了我能想到的所有选择。 能不能指出我可以尝试解决的其他方面,因为它让我坚持了最近两天。

PS:在我的结尾,我会单独犁过每一行,而不是因为有超过4000行的条目而气馁...

更新:

我通过翻阅数据来解决这个问题。 4000多行中有3个错误条目......由于问题以不太可能帮助他人的方式得到解决,请关闭该问题。

2 个答案:

答案 0 :(得分:3)

听起来,我在列中有一个或多个糟糕的日期。有4,000行,我实际上会在视觉上扫描并寻找非常短或很长的东西。

您可以将源更改为选择前1而不是全部4,000。那些插入?如果是这样,那将会给糟糕的日期情景带来影响。如果1行没有流过,则是另一个问题。

答案 1 :(得分:1)

当有人以216而不是2016年输入年份时,我们遇到了此错误。数据源正在读取数据,但OLEDB目标任务失败。 我们在数据流中使用脚本任务进行验证。通过添加一个过去日期不太远的检查,我们能够捕获此类错误,并至少生成有意义的错误消息,以便快速找到并纠正问题。