Actuellement, j'ai une base de données où les PK sont int IDENTITY
. Récemment, au cours de la dernière année, j'ai été chargé de les ajouter à une topologie de réplication. Cela a fonctionné assez bien à l'exception des champs IDENTITY.Remplacement des PK dans les tables DB SQL existantes
Je veux explorer mes options pour les changer ou les remplacer par un uniqeidentifier
(GUID).
Est-il possible d'insérer une nouvelle colonne PK?
Serais-je mieux de simplement l'augmenter à big int
?
Autre chose que je devrais considérer?
Pour expliquer pourquoi je veux faire faire:
Je crois comprendre que lorsque la réplication rencontre une colonne d'identité, il met de côté une gamme identité, par exemple 1-1000 (par défaut), pour chaque abonné pour assurer un INT unique pour cette colonne. Plus vous avez d'abonnés, plus le problème peut être grand. Cela conduit à des erreurs de contrainte de vérification de plage d'identité que nous continuons d'obtenir.
Merci
Vous ne pouvez pas ajouter une nouvelle colonne GUID à utiliser dans la réplication? Il suffit d'ajouter - pas de remplacer - peut-être plus facile (si c'est faisable) –
Cela DOIT être fait afin d'utiliser la réplication et est fait. Le problème que j'essaie de résoudre est lié aux «contraintes de vérification de la plage d'identité», qui sont une corrélation directe avec la façon dont la réplication traite les champs d'identité. –
Donc dans ce cas, j'ajouterais * un nouveau champ GUID, et en ferais le PK - mais un PK NON CLUSTER - et laisserais l'ID INTENTION en place comme clé de clustering sur la table. Votre performance pourrait en souffrir de manière significative ... –