0

我正在使用 Azure 数据工厂中的Common Data Service for Apps连接器将数据加载到 Dynamics 365

在使用实体密钥之前,我已经成功完成了这项工作。请参阅此问题:通过 ADF 将记录加载到 Dynamics 365

现在我正在尝试使用备用键将记录更新到account实体中。(在这种情况下插入)

在动力学

我在以下位置创建了两个自定义属性字段account

Field name        Data Type    Field Type    Max Length
=======================================================
xyz_srcsystem     Single Line  Simple        50
xyz_srccode       Single Line  Simple        50

然后我创建了一个account包含以下字段的 Key:

xyz_alternatekeyaccount

在 ADF 中

然后,我使用 ADF 中的Copy Data活动将数据从 SQL 视图复制到帐户实体中,并使用 CDS 连接器作为目标。

这是我的源 SQL 语句:

SELECT 
CAST(NULL as uniqueidentifier) as accountid,
'ADFTest1' as accountnumber, 'ADF Test 1' as [description],  
'nmcdermaid@xyz.com.au' as emailaddress1,
CAST('TST' AS NVARCHAR(50)) as xyz_srcsystem,
CAST('1' AS NVARCHAR(50)) as xyz_srccode

在目标中,在备用键名字段中,我输入了备用键名:xyz_alternatekeyaccount

运行管道时出现的错误是

实体 ID 值的类型无效

一些排除极端情况的测试:

  • 如果我输入了一个虚拟备用密钥,我得到Cannot retrieve key information of alternate key 'xyz_alternatekeyaccountx' for entity 'account'。这意味着它正在正确找到备用密钥
  • 如果我从连接器中删除备用键,它会退回到我看到的另一组常见错误
  • 当我使用 CDM 连接器将实体拉入 SQL 时,自定义属性以NVARCHAR(MAX)
  • 我尝试转换为这些数据类型:NVARCHAR(MAX) NVARCHAR(50) VARCHAR(MAX) VARCHAR(50)
  • 如果我使用普通键(不是备用键),并且数据类型错误(GUID 以外的任何内容),我会得到同样的错误

另请参阅我提出的这个 Doco GitHub:

https://github.com/MicrosoftDocs/azure-docs/issues/59028

4

1 回答 1

0

当我将源 SQL 更改为此时,它起作用了:

SELECT 
'ADFTest1' as accountnumber, 'ADF Test 1' as [description],  
'nmcdermaid@xyz.com.au' as emailaddress1,
CAST('TST' AS NVARCHAR(50)) as xyz_srcsystem,
CAST('1' AS NVARCHAR(50)) as xyz_srccode

注意:不同之处在于我没有在源数据集中包含真正的主键。

并不是说如果您想 UPSERT 一条新记录 (INSERT) 并且这不是基于备用键,您必须包含一个 NULL 主键

于 2020-07-16T04:15:01.257 回答