2012-01-03 131 views
2

我有一个SSIS包设置为将数据从SQL Server 2008 R2表导出到该表的MySQL版本。然而,该包执行,我约1%的行未能被导出。SSIS:SQL 2008 R2到MySQL数据丢失

我的源连接使用SQL语句

SELECT * FROM表1

所有列都是整数。其成功导出一排的一个例子是

2169,2680,3532,NULL,2169

相比的行已失败

2168,2679,3532,NULL,2168

几乎没有什么不同,我可以确定。

值得注意的是,如果我将源查询更改为仅尝试传输单个失败行 - 即。

SELECT * FROM表1 WHERE ID = 2168

然后记录被细导出 - 只有当一个选择它返回失败多行的一部分。每次导出都会失败。我将错误行重定向到一个文本文件,该文件为失败的行显示-1071610801错误。这显然会转化为: -

DTS_E_ADODESTERRORUPDATEROW:“将此行发送到目标数据源时发生错误。”

这并没有真正增加我对这个问题的理解!

我想知道是否有一个锁定问题或某些东西阻止给定的行被提取或正确插入,但如果任何人有什么想法或建议什么可能导致这个甚至更好的如何去解决它,他们会不胜感激。我目前处于全面损失...

+0

目标表中是否有mybe唯一键,并且源中存在重复值? – Matej 2012-01-04 22:39:52

+0

另一个想法是使用'For Each'容器,计数器变量和源sql作为表达式进行批处理?如果您遇到问题,请寻求帮助。 – Matej 2012-01-04 22:43:55

+0

没有唯一的键 - 如果单独导出,同一行将多次导出,而不是在与select中的其他行一起推出时导出多次。将批量去。 – user1025443 2012-01-05 11:19:00

回答

0

经过很多头挠和尝试每一项工作,我可以想出我终于找到了解决方案。

最后,我将用于由devArt -dotConnect for MySql生成的不同驱动程序的MySQL连接器切换出来,并且有一些小例外(我认为我可以解决),现在所有数据都无错地导出。

驱动程序是不幸付款的产品,但最终我已经拿出了新的抵押贷款,看到所有这些任务变绿了!

0

尝试设置更长的超时(1天)的mysql(ADO.NET)目标。

+0

我不害怕 - 尝试设置高,然后无限的命令超时。事实上,当我尝试使用另一个导出它时,该行会失败,但单独导出时会很好。离奇。 – user1025443 2012-01-04 16:25:32