2009-05-20 22 views
8

Estaba usando el SDK para CRM e imprimí el PK en varias instancias de una de nuestras entidades. Repetí con vistas filtradas de la base de datos, y obtuvo la misma respuesta:MS Dynamics CRM - GUID de base de datos

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

estos no parecen ser GUID válidos. Por un lado, MIRAN mal - son casi idénticos, una propiedad que los GUID no tenían desde la versión anterior 1 & 2 GUID que se basaban en las direcciones MAC y la hora del reloj. Además, sin embargo, es el hecho de que un cierto nibble en un GUID indica la versión del GUID, ese nibble es incorrecto aquí. (Primer nibble de la tercera sección, es decir: 1a6c691d-391a - ** d ** e11-8b0e-0050568407cb) - los valores válidos son 1-5) (Genere un GUID usando el generador GUID de MS - esa ranura siempre será 4 . (Al menos para la versión que tengo.))

¿Son estos GUIDs, o simplemente IDs, y cómo sé?

+0

me he dado cuenta de esto también. Se refieren a sus identificadores como guías en todas partes que puedo ver, pero no hay una indicación clara. – brendan

Respuesta

10

Tiene razón en que son GUID y que son secuenciales. Estas claves no son generadas por CRM. Ellos son generados por SQL Server.

SQL Server tiene un tipo de GUID llamado uniqueidentifier. Se puede configurar como NEWID() o NEWSEQUENTIALID(). NEWID() generará un nuevo GUID cada vez. NEWSEQUENTIALID() genera un GUID por primera vez y luego lo incrementa secuencialmente en inserciones de base de datos posteriores.

Ha descubierto que Dynamics CRM está configurado para NEWSEQUENTIALID().

Más información sobre esto está aquí: http://www.mssqltips.com/tip.asp?tip=1600

+0

Guau, gracias. No estaba seguro de poder obtener una respuesta directa a esa pregunta. Investigué un poco más y encontré esto: http://www.fotia.co.uk/fotia/DY.19.NewSequentialId.aspx - parece que se les puede llamar GUID ya que tienen su MAC en ellos. – Thanatos

+0

Artículo interesante, gracias por publicarlo. Explica por qué CRM utiliza el NEWSEQUENTIALID() debido a los beneficios de db perf. –

+0

Me pregunto @DavidMcDonald si tiene una fuente de referencia para citar. Obviamente estoy viendo valores secuenciales en los registros de entidad insertados, pero no tengo idea de cómo CRM los está generando ... no hay definición de restricción predeterminada ni configuración de identidad ... –

Cuestiones relacionadas