2010-12-14 27 views
26

Pido disculpas por preguntar lo que parece una pregunta cansada, pero ninguna respuesta al foro o documentación que he leído parece proporcionar una respuesta adecuada.MS SQL Server Row GUID Columna

¿Cuál es el propósito de la propiedad Row GUID Column en MS SQL Server 2008?

Permítanme extenderme sobre eso. He visto "No usar GUID como el PK" repetido como la respuesta a esta pregunta, que parece no estar relacionada con mí. Si configuro Row GUID Column, ¿está forzando a esa columna GUID a ser la clave principal o algo así?

Para reformular mi pregunta original: Si tengo una columna GUID en mi tabla que no desempeña ningún papel en la indexación, ¿puedo obtener algo de configuración de esa columna GUID como Row GUID Column?

Respuesta

33

Le permite usar la variable $ ROWGUID en lugar del nombre de la columna. Se usa principalmente para la duplicación de mezcla. No fuerza la columna GUID para PK, solo puede declarar PKs explícitamente. La respuesta a su última pregunta es no, a menos que planee implementar Merge Replication.

+0

Tan claro, tan conciso, gracias a todos> _ instantmusic

+1

Agradable. Y solo para su información, comenzando en SQL Server 2012, también se usa para la funcionalidad [FILESTREAM] (https://msdn.microsoft.com/en-us/library/gg471497.aspx) :-). –

1

La columna RowGUID se utiliza para la replicación. Permite que el motor de replicación se fusione correctamente. Cuando la replicación está habilitada, esta columna se agregará a las tablas que aún no tienen una columna RowGUID.

No obtendrá nada al usarlo a menos que esté planeando implementar la replicación. Es equivalente a establecer newsequentialid() como el valor predeterminado para una columna.

0

No está forzándolo a ser la clave principal, la propiedad simplemente determina si el campo se actualizará automáticamente. SI desea crear el GUID en la aplicación y enviarlo, configure esta propiedad como falsa; de lo contrario, configúrela como verdadera y deje que la base de datos la cree automáticamente. Si el campo es el índice agrupado, asegúrese de que el valor predeterminado sea NEWSEQUENTIALID().

7

El ROWGUIDCOLUMN se utiliza principalmente en escenarios de replicación donde necesita combinar los contenidos de varias tablas de bases de datos satelitales en una base de datos central.

Agregar un ROWGUIDCOLUMN a las tablas que se están replicando garantiza que el motor de replicación pueda usar el campo ROWGUIDCOLUMN para diferenciar entre registros con los mismos valores de clave primaria.

Como esta es una característica que se utiliza principalmente para garantizar una replicación sin problemas, debe evitar el uso de esta columna como clave principal. Su clave principal debe ser una entidad comercial lógica que esté bajo su control y que no afecte las características operativas de las características específicas de su motor de BD elegido.

+0

¡Explicación brillante! –

+0

Muchas gracias. Me alegro de que tenga sentido :) –

+0

Rich (y @Jeffrey): ¿cómo marcar una columna como 'ROWGUIDCOL' _ensure_" que el motor de replicación puede usar el campo ROWGUIDCOLUMN para diferenciar entre registros con los mismos valores de clave primaria "cuando no garantiza ¿unicidad?Sí, de forma predeterminada, el valor casi siempre será exclusivo, pero nada impide añadir valores duplicados manualmente, aparte de agregar un Índice/Restricción único. –

0

No, no lo fuerza como PK. Significa que no puede crear un segundo identificador único y especificarlo como Columna GUID de fila