8

我正在使用 SDK for CRM,并在我们的一个实体的一堆实例上打印出 PK。我用数据库的过滤视图重复了它,得到了相同的答案:

    1a6c691d-391a-de11-8b0e-0050568407cb
    bd7b0ff0-391a-de11-8b0e-0050568407cb
    ed272bfe-391a-de11-8b0e-0050568407cb
    ... 等等 ...

这些似乎不是有效的 GUID。一方面,它们看起来是错误的 - 它们几乎相同,这是 GUID 自基于 MAC 地址和时钟时间的旧版本 1 和 2 GUID 以来所没有的属性。然而,此外,GUID 中的某个 nibble 表示 GUID 的版本 - 此处的 nibble 不正确。(第三部分的第一个半字节,即:1a6c691d-391a-** d **e11-8b0e-0050568407cb) - 有效值为 1-5)(使用 MS 的 GUID 生成器生成 GUID - 该插槽将始终为 4。(至少对于我拥有的版本。))

这些是 GUID,还是只是 ID,我怎么知道?

4

1 回答 1

10

你是对的,它们是 GUID 并且它们是连续的。这些密钥不是由 CRM 生成的。它们由 SQL Server 生成。

SQL Server 有一个称为 uniqueidentifier 的 GUID 类型。它可以配置为 NEWID() 或 NEWSEQUENTIALID()。NEWID() 每次都会生成一个新的 GUID。NEWSEQUENTIALID() 第一次生成一个 GUID,然后在后续的数据库插入中按顺序递增它。

因此,您发现 Dynamics CRM 配置为 NEWSEQUENTIALID()。

有关此的更多信息在这里: http ://www.mssqltips.com/tip.asp?tip=1600

于 2009-06-04T03:02:09.273 回答