症状

将 Microsoft Dynamics AX 与 Microsoft SQL Server 中的表同步时,收到以下错误消息:

无法在 table_name上执行数据定义语言命令。 SQL 数据库已发出错误。

此外,将在应用程序对象服务器(AOS)服务器上的事件查看器应用程序日志中记录类似于以下内容的错误消息:

对象服务器01:报告的数据库(会话1(管理员)): [Microsoft] [ODBC SQL Server 驱动程序] [SQL Server] 由于发现对象名称为 "dbo" 的重复键而终止的唯一索引。table_name"和索引名称"I_xxxIDX"。 重复键值为(value1value2)。 SQL 语句是: "在table_name上创建唯一索引I_xxxIDX column1column2)"

注意

  • Table_name占位符是表名的占位符。

  • I_xxxIDX占位符是唯一索引名称的占位符。

  • Value1占位符和value2占位符是重复键值的占位符。

  • Column1占位符和column2占位符是表示列名称的占位符。

原因

出现此问题的原因是 SQL Server 数据库具有基于在 Microsoft Dynamics AX 尝试创建或尝试重新创建的唯一索引的重复记录。

解决方案

警告 在从 Microsoft Dynamics AX 数据库中删除任何数据之前,应了解添加新的唯一索引的原因。 通常,当对许可证密钥进行更改或在 Microsoft Dynamics AX 配置窗体中添加或删除模块时,Microsoft Dynamics AX 将添加或删除索引。 此外,当开发人员通过应用程序对象树(AOT)或常规升级过程添加索引时,可能会添加索引。 如果不确定添加索引的原因,则不应删除数据。 注意 在按照本文中的说明操作之前,请确保您有一个数据库的完整备份副本,如果出现问题,您可以还原该副本。若要解决此问题,请从表中删除重复记录,以允许添加唯一索引或确定是否应添加唯一索引。 为此,请按照下列步骤操作:

  1. 在 AOS 服务器上,单击 " 开始",单击 " 运行",键入 Eventvwr.exe,然后单击 "确定"

  2. 在 " 事件查看器 " 控制台树中,单击 " 应用程序 " 节点。

  3. 查看应用程序日志中首先出现的重复键错误。 若要执行此操作,请双击 "详细信息" 窗格中首先显示的 "错误" 和 "源: Dynamics 服务器 0x " 项目。注意 X是返回错误消息的 AOS 服务实例的占位符。

  4. 根据显示的错误消息,将表名称、列名称和索引名称替换为您在下一步中使用的 SQL Server 脚本中的错误消息中的值。

  5. 在将值替换为实际错误后,请在 SQL 查询分析器或 SQL Server Management Studio 中运行以下 SQL Server 脚本。

    select count(*) as Duplicate_Record_Count, <column1>, <column2> from <table_name> group by <column1>, <column2> having count(*) > 1 

    注意 当运行脚本时,将占位符替换为相应的信息。

  6. 对于步骤5中返回的每条记录,至少存在一个重复记录。 " Duplicate_record_count " 列通过使用这些索引值指示要复制的记录数。 如果找到重复记录,则必须确定是否将删除记录以添加唯一索引,或者是否应添加唯一索引。 若要查找所有重复记录,请运行以下脚本。

    select Distinct a.* from <table_name> a join (select <column1>, <column2> from <table_name> group by <column1>, <column2> having count(*) > 1) bon a.<column1> = b.<column1> and a.<column2> = b.<column2>  

    注意

    • 在运行脚本之前将占位符替换为相应的信息。 您可以从错误消息中获取信息。

    • Recid列可以用作每个表上的键标识符,以选择或删除记录。

    • 如果不确定如何运行脚本或解释结果,可与合格的数据库管理员(DBA)和技术支持人员协作以决定如何处理结果。

  7. 重复步骤5和步骤6,直到步骤5中的脚本返回 null 值,指示没有重复值,并且可以添加唯一索引。

  8. 如果要添加多个唯一索引,请查看事件查看器应用程序日志中的下一个重复键错误,然后重复步骤4到步骤7,直到事件查看器应用程序日志中没有重复键错误。

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×