1

我有一个 SSIS 包,它连接到 mysql 服务器并尝试从不同的表中提取数据并将行插入到 SQL Server 2005 数据库中。

我注意到的一个问题是,在它运行的任何给定时间,无论它在哪一步,它几乎总是无法将 mysql 的总记录导入 sql server。

没有抛出错误。

一天早上,它将拥有所有 1100 万条记录,而在下一次运行时,它将拥有 3K 到 17K 之间的任何记录。

有人注意到这样的事情吗?

4

2 回答 2

2

我从两个独立的 MySQL 数据库导入数据——一个通过 Internet,一个在内部。我从来没有遇到过这类问题。您能描述一下您是如何设置与 MySQL 数据库的连接的吗?我使用 MySQL 网站上提供的 ODBC 驱动程序,并在我的数据流中使用引用 ODBC 连接的 ADO.NET 数据源进行连接。

至少可以防止自己加载不完整数据的一种可能方法是仅加载新记录。如果源表有一个 ID,并且记录一旦插入就永远不会改变,那么您可以通过首先检查您的数据库来输入最大 ID。

防止加载不完整数据的另一种可能方法是将 MySQL 数据库加载到目标服务器上的临时表中,然后仅加载尚未加载的记录。

另一种方法是将数据加载到临时表中,验证记录是否大于某个最小阈值,例如目标表的行数或每天预期的最小事务数,然后仅在此之后提交更改验证。如果行数不足,则在包上引发错误并发送通知电子邮件。引发错误的好处是您可以将 SQL Server 代理作业设置为重试该步骤,以定义尝试次数,以查看这是否可以解决问题。

希望这些提示对您有所帮助,即使它们不能直接解决问题的根本原因。

于 2008-12-18T07:23:06.283 回答
0

我只通过 SSIS 尝试过 MySQL -> SQL Server 一次,但我发现的错误与 MySQL 日期时间没有转换为 SQL Server 日期时间有关。我原以为这会破坏整个数据流,但是根据您的配置,您可以将其设置为纯粹忽略坏行吗?

于 2008-12-21T12:51:42.383 回答