Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Colonne d'identité SQL Server 2000/2005 + réplication

Il y a l'option "PAS POUR LA RÉPLICATION " qui peut être appliqué aux colonnes d'identité (et aux déclencheurs et autres contraintes).

Dans votre exemple, le serveur1 amorcerait 1-10 mais accepterait simplement répliqué 11-20.

Deux façons de définir vos graines :

Soit :définissez votre graine/incréments avec NOT FOR REPLICATION comme ceci

  • Graine 1, incrément 2
  • Graine 2, incrément 2
  • Graine -1, incrément -2
  • Graine -2, incrément -2
  • Graine 1000000001, incrément 2
  • Graine 1000000002, incrément 2
  • Graine -1000000002, incrément -2
  • Graine -1000000001, incrément -2

Cela vous donne 500 000 000 par serveur pour 8 serveurs

Ou :Ajoutez une deuxième colonne appelée ServerID pour donner des clés composites, utilisez NOT FOR REPLICATION pour la colonne ID

Cela évolue jusqu'à, disons, 256 serveurs pour tinyint avec 2^32 lignes par serveur

Quoi qu'il en soit, ça marche...