none
NEWSEQUENTIALID() 生成的 GUID 啥时候是唯一?如果不唯一它的意思在哪里 RRS feed

  • 问题


  • MSDN http://msdn.microsoft.com/zh-cn/library/ms189786(v=SQL.90) 提到:SQL2005中只有当计算机没有网卡时,NEWSEQUENTIALID() 生成的 GUID 才在该特定计算机中是唯一的。您可以使用 NEWSEQUENTIALID() 生成 GUID 以减少叶级别索引上的页争用。
     
    查询其他网站的时候提到这句话是错的,搞不清楚到底谁是正确的。如果NEWSEQUENTIALID() 生成的 GUID 不唯一,它的存在有什么意思吗?

    2011年12月6日 2:33

答案

  • 是错的。当时写BOL的人写错了,所以后来的版本更正为“使用 NEWSEQUENTIALID() 生成的每个 GUID 在该计算机上都是唯一的。仅当源计算机具有网卡时,使用 NEWSEQUENTIALID() 生成的 GUID 在多台计算机上才是唯一的。”

    因为GUID生成的时候使用了网卡的标识号加上 CPU 时钟的唯一编号。网卡的标识号也是全球唯一的。


    想不想时已是想,不如不想都不想。
    • 已标记为答案 sjgkkk 2011年12月7日 1:52
    2011年12月6日 15:23
    版主

全部回复