如何确定AX2009中相等索引的重新添加

时间:2015-08-13 13:35:10

标签: sql-server axapta microsoft-dynamics dynamics-ax-2012 dynamics-ax-2009

我试图了解Dynamics AX如何以及何时向索引添加RECID。我已经通过阅读这本书" Inside AX 2009"。

找到了一些方法

如果没有定义的索引是唯一的,它会将RECID添加到一个索引。它通过估计每个索引的平均密钥长度来实现这一点,如微软网站上的“系统索引”部分所述。

现在我尝试的是查看索引中的字段并为每个字段添加一定量的字节。 AX中的整数是SQL中的整数,因此该字段将是4个字节,AX中的int64将是SQL中的bigint,所以8个字节,等等。对于索引中的每个字段,我添加它,我得到总量字节数和最低数量的字节将是获取RECID字段的字节。

到目前为止,每次都有效,但是当一个表上的两个索引具有相同的索引时,问题就会出现,这意味着两个索引都具有相同的索引。一个整数类型的字段。

如果两者都有相同的字节数,我已经尝试了,但没有结果:

  • 这将是第一次出现
  • 它将需要最后一次出现
  • 按字母顺序递增第一个
  • 按字母顺序递减第一个

对于这个问题:你为什么想知道这一点 我工作的客户并没有允许AX同步数据库,我建议他们这样做,因为AX是主人。他们同意了,因此我正在制作一份报告,显示哪些表与数据库不匹配。除了recid thingy之外,报告工作正常。

因此我问这个问题是否有人知道如何确定索引的平均密钥长度"。

1 个答案:

答案 0 :(得分:1)

有关索引的信息可以在Microsoft的网站上找到:

https://msdn.microsoft.com/en-us/library/bb278358(v=ax.50).aspx

以下说明如下:

  

如果表上有索引但没有一个是唯一的,那么   运行时估计现有索引的平均密钥长度,   选择密钥长度最小的索引并附加RecId   用于创建唯一索引的列。

这可以通过将索引字段映射到问题中所述的字节来确定。

但如果两个索引的估计平均密钥长度相等,AX会将RECID字段添加到AOT中索引ID最低的索引。