Business Central与Dataverse自定义集成同步异常排查求助
Business Central与Microsoft Dataverse自定义集成:Dataverse到BC自动同步失败排查与解决
问题描述
按官方及第三方教程配置BC与Dataverse自定义集成后,执行「Run Full Sync」仅能实现BC到Dataverse的单向同步:BC初始记录可同步至Dataverse,但Dataverse侧新建的记录无法自动同步到BC——BC代理表能显示这些Dataverse记录,但未自动插入对应BC目标表;手动选中代理表记录点击「Create in Business Central」可成功创建目标表记录,无明确报错信息,怀疑AL Table Proxy Generator生成代理表时遗漏字段。
排查步骤
1. 检查同步配置正确性
- 打开BC的「Dataverse Connection Setup」,确认对应集成表的同步方向为「Bidirectional」或「From Dataverse to Business Central」,而非仅「From Business Central to Dataverse」。
- 查看「Integration Table Mapping」的「Sync. Mode」,确保设置为「Synchronization」(「Replication」仅支持BC到Dataverse单向同步)。
- 确认「Integration Table Mapping」中「Trigger Sync. on Create/Modify/Delete」选项已全部勾选,保证Dataverse侧操作能触发同步。
2. 验证代理表与字段映射完整性
- 对比Dataverse集成表的所有必填字段(含系统字段如
createdon、modifiedon),检查代理表是否存在遗漏:遗漏必填字段会导致同步引擎自动跳过创建操作,但手动创建时BC可能自动补全默认值,因此能成功。 - 检查「Integration Table Mapping」的字段映射,确保代理表与BC目标表的所有必填字段已建立正确映射(数据类型匹配、字段逻辑名一致)。
3. 查看同步作业与日志
- 运行BC的「Dataverse Sync Job Queue Entry」,通过PowerShell命令
Get-JobQueueEntry检查同步作业的状态与错误信息。 - 打开BC的「Integration Synchronization Log」页面,筛选Dataverse到BC的同步记录,查看隐藏的警告或错误(部分非致命错误不会弹出提示,但会写入日志)。
4. 检查代理表AL代码配置
- 确认代理表已添加
IntegrationTable属性,且EntitySetName、LogicalName与Dataverse集成表完全匹配:table 50100 "My Dataverse Proxy Table" { DataClassification = CustomerContent; IntegrationTable = true; EntitySetName = "my_entitysets"; LogicalName = "my_logicalname"; // 字段定义 } - 验证代理表字段的
IntegrationField属性与LogicalName是否和Dataverse字段一致:field(1; "Dataverse ID"; Guid) { DataClassification = CustomerContent; IntegrationField = true; LogicalName = "my_entityid"; }
解决方案
方案1:补全代理表缺失字段
若代理表遗漏Dataverse必填字段,可通过两种方式修复:
- 重新使用AL Table Proxy Generator连接Dataverse,选择目标集成表并勾选所有必填字段(含系统字段),重新生成代理表。
- 手动添加缺失字段,确保字段
LogicalName与Dataverse字段完全一致,数据类型匹配:field(10; "Created On"; DateTime) { DataClassification = CustomerContent; IntegrationField = true; LogicalName = "createdon"; Editable = false; }
方案2:修正同步配置
- 在「Integration Table Mapping」中,将「Sync. Mode」改为「Synchronization」,并勾选所有触发同步的选项。
- 调整同步方向为「Bidirectional」后,重新执行「Run Full Sync」。
方案3:修复日志中的明确错误
- 若日志显示权限问题:确保Dataverse连接的应用用户拥有Dataverse集成表的读写权限,以及BC目标表的插入权限。
- 若日志显示字段映射冲突:调整「Integration Table Mapping」的字段映射,确保数据类型兼容(如Dataverse的
Decimal对应BC的Decimal,而非Integer)。
内容的提问来源于stack exchange,提问作者Lynn
相关产品推荐
相关产品推荐

