Wer*_*lis 5 sql-server azure-data-factory azure-sql-database azure-data-factory-2
我正在尝试使用更改跟踪将数据从 SQL Server 增量复制到 Azure SQL 数据库。我遵循了Microsoft Azure 文档上的教程,但是在为大量表实施此教程时遇到了一些问题。
在复制活动的源部分,我可以使用一个查询,该查询为我提供自上次更改跟踪版本以来更新、插入或删除的所有记录的更改表。这张桌子看起来像
PersonID Age Name SYS_CHANGE_OPERATION
---------------------------------------------
1 12 John U
2 15 James U
3 NULL NULL D
4 25 Jane I
Run Code Online (Sandbox Code Playgroud)
PersonID 是该表的主键。
问题是复制活动只能将数据附加到 Azure SQL 数据库,因此当记录更新时,由于主键重复,它会给出错误。我可以通过让复制活动使用将数据合并到 Azure SQL 数据库上的表的存储过程来处理这个问题,但问题是我有大量的表。
我希望预复制脚本删除 Azure SQL 数据库上已删除和更新的记录,但我不知道如何执行此操作。我是否需要为要复制的每个表创建单独的存储过程和相应的表类型,或者有没有办法让预复制脚本根据更改跟踪表删除记录?
您必须在复制活动之前使用查找活动。通过该 LookUp 活动,您可以查询数据库,以便获得已删除和更新的 PersonID,最好全部集中在一个字段中,用逗号分隔(这样在预复制脚本中更容易使用)。更多信息:https : //docs.microsoft.com/en-us/azure/data-factory/control-flow-lookup-activity
然后,您可以在预复制脚本中执行以下操作:
delete from TableName where PersonID in (@{activity('MyLookUp').output.firstRow.PersonIDs})
Run Code Online (Sandbox Code Playgroud)
这样,您将在插入新行之前删除所有已删除或更新的行。
希望这有帮助!
| 归档时间: |
|
| 查看次数: |
12238 次 |
| 最近记录: |