使用Azure Data Factory进行增量数据传输

时间:2016-12-02 19:16:32

标签: sql-server azure azure-data-factory

在本地SQL Server数据库中,我有许多表,在这些表中,在一天中插入了一系列商店的各种销售数据。我希望通过Data Factory和本地数据管理网关每隔15分钟将这些数据“收集”到Azure。显然,我不想每15分钟复制所有表数据,但仅限于复制自上次提取以来插入的行。 据我所知,documentation建议使用数据“切片”来实现此目的。但是,据我所知,这些切片需要一个时间戳(例如日期时间)列存在于从中获取数据的表中。

  1. 我可以执行“增量”提取(即只获取自上次提取以来插入的行)而不使用这样的时间戳列吗?我可以使用顺序整数列吗?或者甚至根本没有逐渐增加的列?
  2. 假设提取的最后一个切片有一个从08:15到08:30的窗口。现在,如果数据库服务器上的时钟稍微落后于Azure时钟,它可能会添加一些行,时间戳设置为提取切片后的08:29 ,这些行不会在获取下一个切片(08:30到08:45)时包含。有没有一种聪明的方法来避免这个问题?将切片窗口移动过去几分钟可以将风险降至最低,但不能完全消除它。

3 个答案:

答案 0 :(得分:0)

我们计划将此功能添加到ADF中。它可以从顺序整数列而不是时间戳开始。如果顺序整数列有帮助,请告诉我?

答案 1 :(得分:0)

通过在SQL Server上启用“更改跟踪”,可以利用“ SYS_CHANGE_VERSION”通过Azure数据工厂从本地SQL Server或Azure SQL数据库中增量加载数据。

https://docs.microsoft.com/en-us/azure/data-factory/tutorial-incremental-copy-change-tracking-feature-portal

答案 2 :(得分:-1)

如果使用SQL Server 2016,请参阅https://msdn.microsoft.com/en-us/library/mt631669.aspx#Enabling-system-versioning-on-a-new-table-for-data-audit。否则,您可以使用触发器实现相同的功能。

使用NTP同步服务器时间。