"Conversion failed because the data value overflowed the specified type" 错误仅适用于相同 table 的一列

"Conversion failed because the data value overflowed the specified type" error applies to only one column of the same table

我正在尝试将数据从数据库访问文件导入到 SQL 服务器。为此,我通过 SQL Server Import/Export 向导创建了 SSIS 包。当我通过选中 "validate without execution" 选项的执行包实用程序执行包时,所有 table 都通过了验证。但是,在执行过程中我收到了以下错误块(使用图片,因为 blockquote 使用了很多 space):

经过调查,我准确地找到了导致问题的 table 和列。然而,这是我几天来一直试图解决的问题,我 运行 对可能的选择感到困惑。

麻烦的结构 table 专栏

如错误列表中所述,故障发生在 RHF 维修 table 的“返回日期”列中。在 Access 中,有问题的列是 Date/Time 类型。在实际的 table 中,所有输入都是 'mmddyy' 的形式,点击后会变成 'mm/dd/yyyy' 格式:

在 SSIS 包中,它创建了 OLEDB Source/Destination 关系,如下所示:

在这个关系中,输出列和外部列的数据类型都是 DT_DATE(我仍然认为这是我出现问题的主要原因)。最让我烦恼的是,与“返回日期”列相邻的列与我上面描述的完全相同,并且 none 应用到它或任何其他相同类型的列的错误中,“返回日期”实际上是唯一的羊群中的害群之马。

我尝试了什么

我已经尝试了以下thread中的每个选项,错误仍然存​​在。

我尝试了数据转换选项,试图将此列转换为日期戳甚至 unicode 字符串。没用。

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

浏览访问中的数据 table 也没有给我任何东西。它们全部使用相同的 6 字符格式。

在这一点上,我真的用尽了我能想到的所有选择。 你能给我指出正确的方向吗,我还可以尝试解决它吗,因为过去两天它让我抓狂。

PS:在我这边,我将单独浏览每一行,同时不会因为有 4000 多个行条目而感到气馁...

更新:

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

在我看来,您的专栏中有一个或多个糟糕的约会。对于 4,000 行,我实际上会目视扫描并寻找很短或很长的内容。

您可以将来源更改为选择前 1 个而不是全部 4,000 个。那些插入?如果是这样,那将加重糟糕约会的情况。如果1行没有流过,那就是另一个问题。

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

(我只是分享我的经验,我是如何克服这个问题的,以防对某人有帮助)

我的场景:

ole db 数据源中的 Identifier 列之一已从 int 更改为 bigint。我收到错误消息 - 转换失败,因为数据值溢出指定类型。

基本上,它告诉我源数据大小大于目标数据大小。

我试过的:

在ole db data source和destination两个地方,我点了"show advanced editior",检查数据类型Identifier是bigint。但是,我仍然收到错误消息

解决方案对我有用:

ole db data source--> show advanced edition option--> Input and Output Properties--> OLE DB Source Output--> 有两个选项-External columns & Output columns .

在我的例子中,虽然外部列中的标识符列显示的是 bigint 数据类型,但输出列中显示的是 int 数据类型。所以,我把数据类型改成了bigint,解决了我的问题。

我偶尔会遇到这个问题,特别是当我有一个包含大量数据的大 table 时。

希望对您有所帮助。