2009-05-20 7 views
8

J'utilisais le SDK pour CRM, et j'imprimais le PK sur un tas d'instances de l'une de nos entités. Je répétais avec des vues filtrées de la base de données, et a obtenu la même réponse:MS Dynamics CRM - GUID de base de données

 
    1a6c691d-391a-de11-8b0e-0050568407cb 
    bd7b0ff0-391a-de11-8b0e-0050568407cb 
    ed272bfe-391a-de11-8b0e-0050568407cb 
    ... and so on ... 

Ceux-ci ne semblent pas être valides GUIDs. Pour un, ils se trompent - ils sont presque identiques, une propriété que les GUID n'ont pas eu depuis l'ancienne version 1 & 2 GUID qui étaient basés sur les adresses MAC et l'heure de l'horloge. De plus, cependant, le fait qu'un certain grignotage dans un GUID indique la version du GUID - ce grignotage est incorrect ici. (Premier grignotage de la troisième section, ie: 1a6c691d-391a - ** d ** e11-8b0e-0050568407cb) - les valeurs valides sont 1-5) (Générer un GUID en utilisant le générateur GUID de MS - cet emplacement sera toujours 4 (Au moins pour la version que j'ai.))

Ces GUID, ou simplement ID, et comment le savoir?

+0

Je l'ai remarqué aussi. Ils se réfèrent à leurs ids comme guids partout où je peux voir, mais il n'y a pas d'indication claire. – brendan

Répondre

10

Vous avez raison de dire qu'ils sont GUID et qu'ils sont séquentiels. Ces clés ne sont pas générées par CRM. Ils sont générés par SQL Server.

SQL Server a un type GUID appelé uniqueidentifier. Il peut être configuré en tant que NEWID() ou NEWSEQUENTIALID(). NEWID() générera un nouveau GUID à chaque fois. NEWSEQUENTIALID() génère un GUID la première fois, puis l'incrémente séquentiellement sur les insertions de base de données suivantes.

Vous avez ainsi découvert que Dynamics CRM est configuré pour NEWSEQUENTIALID().

Plus d'informations à ce sujet est ici: http://www.mssqltips.com/tip.asp?tip=1600

+0

Wow, merci. Je n'étais pas sûr d'avoir une réponse directe à cette question. A fait un peu plus de recherche et trouvé ceci: http://www.fotia.co.uk/fotia/DY.19.NewSequentialId.aspx - semble qu'ils peuvent être appelés GUIDs car ils ont votre MAC en eux. – Thanatos

+0

Article intéressant, merci de l'avoir posté. Il explique pourquoi CRM utilise le NEWSEQUENTIALID() - en raison des avantages de db perf. –

+0

Je me demande @DavidMcDonald si vous avez une source de référence à citer. Je vois clairement des valeurs séquentielles sur les enregistrements d'entités insérés mais je n'ai aucune idée de comment CRM les génère ... il n'y a pas de contrainte par défaut définie et pas de paramètre d'identité ... –

Questions connexes