web-dev-qa-db-fra.com

MS SQL Server Row GUID Colonne

Je m'excuse de poser ce qui semble être une question fatiguée, mais aucune réponse du forum ou documentation que j'ai lue ne semble fournir une réponse adéquate.

Quel est le but de la propriété Row GUID Column dans MS SQL Server 2008?

Laissez-moi m'étendre là-dessus. J'ai vu "Ne pas utiliser GUID en tant que PK", répété comme la réponse à cette question, qui semble n'avoir aucun rapport avec moi. Si je règle Row GUID Column force-t-il la colonne GUID à être la clé primaire ou quelque chose d'autre?

Pour reformuler ma question initiale: Si j'ai une colonne GUID dans ma table qui ne joue aucun rôle dans l'indexation, puis-je gagner à quoi que ce soit en définissant cette colonne GUID comme Row GUID Column?

29
instantmusic

Il vous permet d'utiliser la variable $ ROWGUID au lieu du nom de la colonne. Elle est principalement utilisée pour la réplication de fusion. La colonne GUID n'est pas forcée pour la PK, vous pouvez uniquement déclarer explicitement les PK. La réponse à votre dernière question est non, sauf si vous envisagez de mettre en œuvre la réplication de fusion .

35
suhprano

ROWGUIDCOLUMN est principalement utilisé dans les scénarios de réplication dans lesquels vous devez combiner le contenu de plusieurs tables de bases de données satellites dans une base de données centrale. 

L'ajout d'un ROWGUIDCOLUMN aux tables en cours de réplication garantit que le moteur de réplication peut utiliser le champ ROWGUIDCOLUMN pour différencier les enregistrements avec les mêmes valeurs de clé primaire.

S'agissant d'une fonctionnalité principalement utilisée pour garantir une réplication fluide, évitez d'utiliser cette colonne comme clé primaire. Votre clé primaire doit être une entité commerciale logique sous votre contrôle et qui n'affecte pas les caractéristiques opérationnelles de fonctionnalités spécifiques du moteur de base de données choisi.

8
Rich Turner

La colonne RowGUID est utilisée pour la réplication. Cela permet au moteur de réplication de fusionner correctement. Lorsque la réplication est activée, cette colonne est ajoutée aux tables qui ne possèdent pas encore de colonne RowGUID.

Vous ne gagnerez rien en l'utilisant, sauf si vous prévoyez d'implémenter la réplication. Cela équivaut à définir newsequentialid () comme valeur par défaut pour une colonne.

2
Stuart Thompson

Cela ne l'oblige pas à être la clé primaire, la propriété détermine simplement si le champ sera automatiquement mis à jour. SI vous voulez créer le GUID dans l'application et l'envoyer, définissez cette propriété sur false, sinon définissez-la sur true et laissez la base de données la créer automatiquement. Si le champ est l'index clusterisé, assurez-vous que la valeur par défaut est NEWSEQUENTIALID (). 

0
HLGEM

Non, ça ne force pas comme le PK. Cela signifie que vous ne pouvez pas créer un deuxième identifiant unique et le spécifier en tant que Row GUID Column

0
Conrad Frix