使用Azure Data Factory向Dynamics 365加载数据时遇重复键错误
Azure Data Factory Copy Activity 报错:Dynamics 替代键重复问题
错误信息
"Code": 23605, "Message": "ErrorCode=DynamicsOperationFailed,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Dynamics operation failed with error code: -2147088238, error message: A record that has the attribute values SAP Client, SAP System Id, OrderPOS-ID, Order ID, SAP Module, Account Assignment ID already exists. The entity key Purchase Order Atl Key requires that this set of attributes contains unique values. Select unique values and try again..,Source=Microsoft.DataTransfer.ClientLibrary.DynamicsPlugin,''Type=System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Message=The creator of this fault did not specify a Reason.,Source=Microsoft.DataTransfer.ClientLibrary.DynamicsPlugin,'"
环境与处理逻辑
- 使用Azure Data Factory Copy Activity,通过带存储过程的动态查询,基于配置表批量加载实体。
- 针对采购订单实体拆分两个视图优化同步效率:
Purchase_Order_master:仅向Dynamics同步新的全键记录- 第二个视图:获取所有属性,对源端更新的数据执行Upsert操作
- 两个视图的公共列:
sie_purchaseordersid(uniqueidentifier, null) Executionid(uniqueidentifier, not null) Hashkey(varbinary(32), not null)
- HashKey由替代键列生成,逻辑如下:
HASHBYTES('SHA2_256', CONCAT(SAPSYSID,SAPMOD,MANDT,EBELN,EBELP,TRY_CONVERT(NVARCHAR(255),TRY_CONVERT(INT,ZEKKN)))) HashKey
- Dynamics侧已将
SAP Client、SAP System Id、OrderPOS-ID、Order ID、SAP Module、Account Assignment ID定义为Purchase Order Atl Key替代键,用于约束唯一性。
问题现象
近期无规律出现部分国家的采购订单数据加载失败,部分国家数据加载正常;报错指向替代键重复,但已检查源端对应列无重复值。
已排查步骤
- 核对源端替代键列(SAP Client、SAP System Id等6列),未发现重复记录
- 确认Dynamics侧替代键的定义与源端匹配,无配置错误
求助
目前已排查常规重复问题但仍无法解决,求有类似经验的开发者提供排查方向或解决方案。
内容的提问来源于stack exchange,提问作者dataengineer.developer
相关产品推荐
相关产品推荐

