【发布时间】:2017-03-13 22:49:54
【问题描述】:
我正在尝试将数据从数据库访问文件导入 SQL 服务器。为此,我通过 SQL Server 导入/导出向导创建了 SSIS 包。当我通过执行包实用程序执行包并选中“不执行验证”选项时,所有表都已通过验证。但是,在执行过程中,我收到了以下错误信息(使用图片,因为 blockquote 占用了大量空间):
经过调查,我准确地找到了导致问题的表和列。但是,这是我几天来一直在尝试解决的问题,而且我对可能的选择感到无所适从。
问题表列的结构
如错误列表中所述,故障发生在“返回日期”列的 RHF 维修表中。在 Access 中,有问题的列是日期/时间类型。在实际表格中,所有输入都是“mmddyy”的形式,点击后会变成“mm/dd/yyyy”格式:
在 SSIS 包中,它创建了 OLEDB 源/目标关系,如下所示:
在这种关系中,输出列和外部列中的数据类型都是 DT_DATE(我仍然认为这是我的问题的关键原因)。最让我烦恼的是,与返回日期相邻的列与我上面描述的完全相同,并且没有任何错误应用于它或任何其他相同类型的列,返回日期实际上是唯一的害群之马羊群。
我尝试了什么
我已经尝试了以下thread中的每个选项,错误仍然存在。
我尝试了数据转换选项,试图将此列转换为日期戳甚至 unicode 字符串。没用。
我尝试使用高级源代码编辑器为日期戳/unicode 字符串指定数据类型。我尝试仅在输出列中指定它,在外部列和输出列中都尝试过,结果相同。
浏览访问表中的数据也没有给我任何东西。它们都使用相同的 6 字符格式。
在这一点上,我真的用尽了我能想到的所有选择。 能否请您指出我还可以尝试解决的正确方向,因为过去两天这让我发疯。
PS:最后,我会单独浏览每一行,同时不会因为有 4000 多个行条目而气馁……
更新:
我通过浏览数据解决了这个问题。在 4000 多行中有 3 个错误条目...由于问题的解决方式不太可能帮助其他人,请关闭该问题。
【问题讨论】:
-
也许您应该在 Access 中编写
CREATE TABLE语句(如果可能的话;我对此了解不多)并将其与 SQL Server 中的 create table 语句进行比较?此外,可能是 SQL Server 和 Access 之间的区域设置差异吗?也许摆弄SET DATEFORMAT?还是SET LANGUAGE? -
@TT。谢谢,我一定会尝试所有建议...
-
您应该配置数据转换组件以将错误行重定向到不同的输出,看看这个learnmsbitutorials.net/…
标签: sql-server date ssis sql-server-2012 data-conversion