You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AX 2012 R2数据库同步异常:删SQL列后仍报“Invalid column name”错误

AX 2012 AOT与SQL数据库精准同步问题解决步骤

核心问题根因

直接在SQL Server中删除列X,但AX的AOT元数据仍保留该列定义,导致AX运行时仍尝试访问该列引发报错。必须保证AOT元数据与SQL对象双向一致,不能仅修改其中一端。

分步解决方法

  • 彻底移除AOT中的列X
    打开AX客户端的AOT,定位到Data Dictionary > Tables > LedgerParameters > Fields节点,找到列X,右键选择Delete并保存AOT更改。这是解决问题的基础,只有AOT元数据移除后,同步操作才能正确更新SQL对象。

  • 执行强制全量同步
    进入System administration > Common > Database > Synchronize database,勾选以下选项后执行同步:

    • Synchronize all:同步所有表的元数据
    • Force synchronization:强制AX用AOT元数据覆盖SQL中的对象,忽略增量差异判断
  • 清理全链路缓存

    • 客户端缓存:关闭AX客户端,删除路径C:\Users\<你的用户名>\AppData\Local\Microsoft\Dynamics AX\6.0\下的所有缓存文件夹。
    • AOS服务器缓存:在AOS服务器的命令提示符中,切换到AOS安装目录(默认C:\Program Files\Microsoft Dynamics AX\60\Server\<AOS实例名>\bin\),执行命令:axutil clearcache,完成后重启AOS服务。
  • 重新生成完整CIL与全量编译

    • 全量编译:在AOT中右键点击Projects节点,选择Compile all,确保无编译错误。
    • 完整CIL生成:进入System administration > Setup > Services and Application Integration Framework > Inbound ports,点击Generate CIL,选择Full CIL generation,等待生成完成。
  • 验证一致性
    在SQL Server中执行以下查询,确认LedgerParameters表中已无列X:

    SELECT name 
    FROM sys.columns 
    WHERE object_id = OBJECT_ID('LedgerParameters') 
      AND name = 'X'
    

    若查询无结果,再通过AX表浏览器打开LedgerParameters表验证是否正常。

  • 排查引用残留
    检查是否有自定义代码、表单、报表或扩展引用了列X:

    • 在AOT中使用Find功能(快捷键Ctrl+F)搜索列X的名称,定位所有引用位置并修改/移除。
    • 检查是否有第三方ISV解决方案或自定义扩展包引用该列,需同步调整。

内容的提问来源于stack exchange,提问作者Devv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 13:33:21