为什么所有RecIds都以5637144576开头?

时间:2014-08-28 11:23:23

标签: axapta dynamics-ax-2009 dynamics-ax-2012

这是一个完全没有意义的问题......但我想知道答案:

为什么Ax2012中的所有RecIds(以及我认为v2.5以后的所有内容?)都以5637144576开头?为什么不从RecId 1开始,就像在TempDB表中一样?这必须是旧版本的遗留物。

我记得客户在旧版本中耗尽了RecId的情况,据说可以通过使每个表的RecIds唯一并将其更改为64位数据类型来解决。但是仍然有这个改变,它从一个特定的数字开始。

好奇......

2 个答案:

答案 0 :(得分:7)

这是一个纯粹的推测性答案......

5637144576恰好是0x150000000,不能存储在32位整数中。当RecId从32位增长到64位(in AX 4.0)时,这对于测试目的很重要。

此外,任何新的RecId都不会与AX 3.0中的旧RecId发生冲突。这对升级过程很重要。

为什么不选择0x100000000或4294967296?
因为在十进制中,这很难与4294967196和其他小数字区分开来。

为什么不选择5000000000十进制?
因为我们programmers best calculate in hex

另见Are RecIds unique across Common tables in Dynamics AX 2012?

答案 1 :(得分:0)

此值(5637144576)在AX数据库的存储过程(sp_GetNextRecId)中进行了硬编码。