【问题标题】:SSIS data import with resume带简历的 SSIS 数据导入
【发布时间】:2012-02-07 03:21:42
【问题描述】:

我需要将一个大型 SQL 表从我的本地实例推送到 SQL Azure。传输是简单的“干净”上传 - 只需将数据推送到新的空表中即可。

该表非常大(约 1 亿行),仅包含 GUID 和其他简单类型(没有时间戳或任何内容)。

我使用 SSMS 中的数据导入/导出向导创建了一个 SSIS 包。这个包很好用。

问题在于程序包在缓慢或断断续续的连接上运行时。如果互联网连接在中途中断,则无法“恢复”传输。

设计 SSIS 包以可恢复方式上传此数据的最佳方法是什么?即在连接失败的情况下,或允许作业仅在特定时间窗口之间运行。

【问题讨论】:

    标签: sql ssis azure-sql-database data-transfer


    【解决方案1】:

    上传时只需按您的 GUID 订购。并确保在从故障中恢复或重新启动时使用 Azure 中的 max(guid) 作为起点。

    【讨论】:

      【解决方案2】:

      通常,在这种情况下,我会设计包以枚举大小为 N 的批次(1k 行、10M 行等),并将最后一次成功传输的批次记录到处理表中。但是,使用 GUID,您无法将它们完全划分为存储桶。

      在这种特殊情况下,我会将您的数据流修改为类似于 Source -> Lookup -> Destination。在查找转换中,查询 Azure 端并仅检索键 (SELECT myGuid FROM myTable)。在这里,我们只对查找记录集中没有匹配的行感兴趣,因为那些是等待传输的行。

      假设 Azure 端已完全填充,加上相关的数据传输成本,一个完整的缓存将花费大约 1.5GB(100M * 16 字节)的内存。该成本将低于截断和重新传输所有数据,但只是想确保我已将其调用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-20
        • 1970-01-01
        • 2018-03-29
        相关资源
        最近更新 更多