【问题标题】:MS Dynamics CRM - database GUIDsMS Dynamics CRM - 数据库 GUID
【发布时间】:2009-05-20 16:13:25
【问题描述】:

我正在使用用于 CRM 的 SDK,并在我们的一个实体的一堆实例上打印出 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,我怎么知道?

【问题讨论】:

  • 我也注意到了这一点。他们在我能看到的任何地方都将他们的 id 称为 guid,但没有明确的指示。

标签: guid dynamics-crm


【解决方案1】:

您是对的,它们是 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

【讨论】:

  • 哇,谢谢。我不确定我是否会得到一个直接的答案。做了更多研究并发现:fotia.co.uk/fotia/DY.19.NewSequentialId.aspx - 似乎它们可以被称为 GUID,因为它们中有你的 MAC。
  • 有趣的文章,感谢发布。它解释了为什么 CRM 使用 NEWSEQUENTIALID() - 因为 db perf 的好处。
  • 我想知道@DavidMcDonald 你是否有参考来源可以引用。我清楚地看到插入的实体记录上的顺序值,但我不知道 CRM 是如何生成这些的……没有定义默认约束,也没有身份设置……
  • 相关问题:有谁知道是否可以将相同的 GUID 用作不同实体类型记录的 PK,或者 PK GUID 是否需要在所有实体类型中都是唯一的?
猜你喜欢
  • 2012-05-21
  • 2014-01-11
  • 2016-02-12
  • 1970-01-01
  • 1970-01-01
  • 2019-06-24
  • 2017-05-28
  • 2013-06-21
  • 1970-01-01
相关资源
最近更新 更多