Pregunta

  

Duplicar posible:
  

¿Hay circunstancias en las que es imprescindible el uso de GUID como claves primarias en un servidor SQL Server 2005/8 DB. Por ejemplo, ¿el uso de la fuerza de MS Sync Framework esto, o replicación de datos?

¿Fue útil?

Solución

Se podría utilizar GUID como clave si necesitaba varias bases de datos a través de la sincronización de replicación.

Otra razón para utilizar guids es si desea crear filas de algún cliente remoto por ejemplo, una aplicación de Windows Forms y luego los someterá al servidor a través de servicios web, etc.

Si hace esto me gustaría sugerir fuertemente que se asegure de que especifique su propio índice agrupado en base a una incrementación int de auto que no es única. Puede ser una sobrecarga considerable insertar filas en una tabla en la que el índice agrupado es un GUID.

Actualización: Aquí es un ejemplo de cómo configurar una tabla como la siguiente:

CREATE TABLE [dbo].[myTable](
[intId] [int] IDENTITY(1,1) NOT NULL,
[realGuidId] [uniqueidentifier] NOT NULL,
[someData] [varchar](50) NULL,
    CONSTRAINT [PK_myTable] UNIQUE NONCLUSTERED 
    (
   [realGuidId] ASC
    )
)

CREATE CLUSTERED INDEX [IX_myTable] ON [dbo].[myTable] 
(
[intId] ASC
)

Se podría insertar en la tabla como por ejemplo la normalidad:.

INSERT INTO myTable VALUES(NEWID(), 'Some useful data goes here')

Actualización: He escuchado a un muy buen dotnetrocks episodio que habla de esto merece la pena una escucha - Show # 447

Otros consejos

Estoy utilizando GUID como claves primarias, porque no quieren tener las claves primarias compuestas cuando estoy construyendo aplicaciones con bases de datos distribuidas y una base de datos central que se sincronizan con los datos de todos los distribuidos queridos. Con GUID estoy seguro (casi *) No voy a tener un conflicto (violación de la restricción) cuando saco los datos de todos los DBs en el central.

* es muy poco probable que tenga el mismo GUID generado en dos lugares diferentes, pero no imposible.

Cuando la base de datos no está centralizado o parte de la colección se realiza de forma remota.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top