【发布时间】:2011-09-06 12:15:36
【问题描述】:
我正在尝试使用 SSIS 将 67,714,854 行从 MySQL 传输到 SQL Server。传输 14,282,990 行后包超时。我也将超时属性更改为 0,但这并没有帮助。
我该如何解决这个问题?
【问题讨论】:
-
如果您为 ssis 付费,那不提供供应商支持吗?
-
有什么理由不分成七次一千万行的传输?
我正在尝试使用 SSIS 将 67,714,854 行从 MySQL 传输到 SQL Server。传输 14,282,990 行后包超时。我也将超时属性更改为 0,但这并没有帮助。
我该如何解决这个问题?
【问题讨论】:
我找到了一个 hacky 解决方案。这在您的查询结束时有一个限制。我在使用 ADO .NET 连接来连接到 MySQL 时遇到了同样的问题。虽然不能解决问题。它至少可以完成工作。
SSIS:2208 R2。 MySQL:5.0
【讨论】:
LIMIT 10000000 使其工作。希望我知道为什么。
在您的 OLE DB 目标连接上,您选择了哪种“数据访问模式”。如果您选择了“表或视图 - 快速加载”(这是默认设置),那么将指定“最大插入提交大小”。您可以尝试以下两种方法之一:1)将提交大小更改为更大的数字;或 2) 尝试其他数据访问模式“Table or vew”。由于您遇到超时错误,我怀疑选项 1 可能没有帮助(因为您已经获得了较小值的超时),因此请尝试选项 2。虽然这可能会导致性能降低,但它实际上可能会完成成功地。 (然后您可以尝试@Siva 的方法并将输出拆分到多个目的地以提高性能)。
(注意:我指的是 SQL Server 2008 R2 中可用的内容,如果您使用的是以前的版本,可能会略有不同)
如果上述方法都不起作用,您还可以尝试通过运行 SQL Server 导入向导从头开始创建一个新的 SSIS 包(在 SQL Server Management Studio 中右键单击您的数据库并选择任务/导入数据。按照向导屏幕和接近尾声时,请确保选中保存 SSIS 包的复选框,然后选择一个文件位置以将其保存到。通常,生成的 SSIS 包将是一个功能包(然后您还可以进行任何进一步的修改喜欢)。
【讨论】:
MySQL 是否给您错误,或者您是否使用 PHP(或其他语言)来传输数据并且 that 超时?对于后者,在 PHP 中,您可以使用以下命令将脚本超时设置为无限:
set_time_limit(0);
无论哪种方式,根据给出的信息,我不确定它是什么类型的数据库,但通常我会设置一个cron 脚本来逐位传输数据,以将负载保持在可接受的水平。请提供更多信息...
【讨论】: