2014-08-28 20 views
2

這是一個完全沒有意義的問題......但一個,我想知道的答案:爲什麼所有RecIds都以5637144576開頭?

爲什麼在Ax2012所有RecIds(以及所有自V2.5我覺得?)開始5637144576?爲什麼不從RecId 1開始,就像在TempDB表中一樣?這必須是舊版本中的一些遺留問題。

我記得有些客戶在舊版本中用完RecId的情況,據推測這是通過使RecIds在每個表中唯一併將其更改爲64位數據類型來解決的。但是,這種變化仍然從特定的數字開始。

只是好奇...

+1

當看作十六進制數字時更爲明智。 – 2014-08-28 12:18:35

+0

有趣...我沒有注意到,但我確實有5637144576實際記憶,我不知道爲什麼。 – 2014-08-28 15:24:52

+0

對我來說相當相同...我的一位同事提到了它,我只是不能讓它去:) – 2014-08-29 05:38:50

回答

4

又來了一個純粹投機的答案...

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?

+0

感謝您的帖子...投機也許,但對我來說夠好! – 2014-08-28 14:25:46

0

此值(5637144576)是硬codded在AX數據庫存儲的過程(sp_GetNextRecId)。

相關問題