带简历的SSIS数据导入

时间:2012-01-10 17:49:06

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

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

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

我使用SSMS中的数据导入/导出向导创建SSIS包。该套餐效果很好。

问题是当程序包通过慢速或间歇性连接运行时。如果互联网连接中途停止,那么就无法“恢复”转移。

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

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:3)

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