【问题标题】:Timeout issue during data transfer from MySQL to SQL Server using SSIS使用 SSIS 将数据从 MySQL 传输到 SQL Server 期间出现超时问题
【发布时间】:2011-09-06 12:15:36
【问题描述】:

我正在尝试使用 SSIS67,714,854 行从 MySQL 传输到 SQL Server。传输 14,282,990 行后包超时。我也将超时属性更改为 0,但这并没有帮助。

我该如何解决这个问题?

【问题讨论】:

  • 如果您为 ssis 付费,那不提供供应商支持吗?
  • 有什么理由不分成七次一千万行的传输?

标签: mysql ssis timeout


【解决方案1】:

我找到了一个 hacky 解决方案。这在您的查询结束时有一个限制。我在使用 ADO .NET 连接来连接到 MySQL 时遇到了同样的问题。虽然不能解决问题。它至少可以完成工作。

SSIS:2208 R2。 MySQL:5.0

【讨论】:

  • 我有一个类似的问题,我的查询将返回 0 行(应该是 39,000 左右)。添加LIMIT 10000000 使其工作。希望我知道为什么。
【解决方案2】:

在您的 OLE DB 目标连接上,您选择了哪种“数据访问模式”。如果您选择了“表或视图 - 快速加载”(这是默认设置),那么将指定“最大插入提交大小”。您可以尝试以下两种方法之一:1)将提交大小更改为更大的数字;或 2) 尝试其他数据访问模式“Table or vew”。由于您遇到超时错误,我怀疑选项 1 可能没有帮助(因为您已经获得了较小值的超时),因此请尝试选项 2。虽然这可能会导致性能降低,但它实际上可能会完成成功地。 (然后您可以尝试@Siva 的方法并将输出拆分到多个目的地以提高性能)。

(注意:我指的是 SQL Server 2008 R2 中可用的内容,如果您使用的是以前的版本,可能会略有不同)

如果上述方法都不起作用,您还可以尝试通过运行 SQL Server 导入向导从头开始创建一个新的 SSIS 包(在 SQL Server Management Studio 中右键单击您的数据库并选择任务/导入数据。按照向导屏幕和接近尾声时,请确保选中保存 SSIS 包的复选框,然后选择一个文件位置以将其保存到。通常,生成的 SSIS 包将是一个功能包(然后您还可以进行任何进一步的修改喜欢)。

【讨论】:

    【解决方案3】:

    MySQL 是否给您错误,或者您是否使用 PHP(或其他语言)来传输数据并且 that 超时?对于后者,在 PHP 中,您可以使用以下命令将脚本超时设置为无限:

    set_time_limit(0);
    

    无论哪种方式,根据给出的信息,我不确定它是什么类型的数据库,但通常我会设置一个cron 脚本来逐位传输数据,以将负载保持在可接受的水平。请提供更多信息...

    【讨论】:

    • 我的源是 mysql,我的目标是 sql server。我在 oledb souce 转换中使用了 selct all colums from table。你能告诉我如何以及什么是 cron 脚本,谢谢你的回应
    • 好吧,如果您继续使用 SQL,则无法编写 cron 脚本。 cron 脚本基本上是一个让系统以设定的时间间隔自动运行的脚本。这将允许您逐位移动数据。但是,这需要一种单独的语言,例如 php,因为它需要跟踪被移动的最后一行。 cron 脚本将运行相同的代码,并带有一个额外的 WHERE 子句,指示 id(/行)范围。您显然可以手动完成,但这可能很乏味。添加 WHERE id >= n1 AND id 或使用限制函数:LIMIT 100000, 100000
    猜你喜欢
    • 1970-01-01
    • 2021-10-25
    • 2016-12-04
    • 2012-09-29
    • 2010-10-29
    • 2016-01-13
    • 1970-01-01
    • 2019-12-25
    • 2019-02-20
    相关资源
    最近更新 更多