我试图了解Dynamics AX如何以及何时向索引添加RECID。我已经通过阅读这本书" Inside AX 2009"。
找到了一些方法如果没有定义的索引是唯一的,它会将RECID添加到一个索引。它通过估计每个索引的平均密钥长度来实现这一点,如微软网站上的“系统索引”部分所述。
现在我尝试的是查看索引中的字段并为每个字段添加一定量的字节。 AX中的整数是SQL中的整数,因此该字段将是4个字节,AX中的int64将是SQL中的bigint,所以8个字节,等等。对于索引中的每个字段,我添加它,我得到总量字节数和最低数量的字节将是获取RECID字段的字节。
到目前为止,每次都有效,但是当一个表上的两个索引具有相同的索引时,问题就会出现,这意味着两个索引都具有相同的索引。一个整数类型的字段。
如果两者都有相同的字节数,我已经尝试了,但没有结果:
对于这个问题:你为什么想知道这一点 我工作的客户并没有允许AX同步数据库,我建议他们这样做,因为AX是主人。他们同意了,因此我正在制作一份报告,显示哪些表与数据库不匹配。除了recid thingy之外,报告工作正常。
因此我问这个问题是否有人知道如何确定索引的平均密钥长度"。
答案 0 :(得分:1)
有关索引的信息可以在Microsoft的网站上找到:
https://msdn.microsoft.com/en-us/library/bb278358(v=ax.50).aspx
以下说明如下:
如果表上有索引但没有一个是唯一的,那么 运行时估计现有索引的平均密钥长度, 选择密钥长度最小的索引并附加RecId 用于创建唯一索引的列。
这可以通过将索引字段映射到问题中所述的字节来确定。
但如果两个索引的估计平均密钥长度相等,AX会将RECID字段添加到AOT中索引ID最低的索引。