2012-06-07 3 views
3

J'ai configuré une réplication de fusion MSSQL sur une base de données volumineuse. L'une des tables contient 1,5 milliard d'enregistrements et provoque l'expiration de l'agent d'instantané sur cette table. J'ai donc d'abord exporté les données de la table vers un fichier .csv, tronqué la table, puis réexécuté l'agent snapshot. Maintenant avec succès. Une fois l'instantané effectué et l'abonné synchronisé, je souhaite réimporter les données à partir du fichier .csv. Toutefois, la réplication de fusion utilise la "Gestion de plage d'identité" automatique avec des valeurs fixes que je ne peux pas modifier. L'une de ces valeurs contient la valeur de départ suivante. Chaque nouvel enregistrement inséré dans la table sera incrémenté de 1 à partir de cette valeur. Cependant, les données exportées, bien sûr, ont déjà leur valeur d'ID et je veux importer à nouveau ces identifiants correspondants. J'ai déjà fixé la taille de la gamme Publisher/Subscriber à 10 milliards mais seulement cela ne résoudra pas le problème.Réplication de fusion MSSQL Gestion automatique des plages d'identités

Comment pourrai-je jamais réimporter ces données avec la gestion automatique d'intervalle d'identité?

Merci d'avance.

Répondre

1

Vous pouvez effectuer les opérations suivantes:

  1. Assurez-vous que les ID dans le fichier .csv dans la plage attribué à l'éditeur.

  2. Run SET IDENTITY_INSERT <Table Name> ON - ce qui permettra d'insérer l'identité des valeurs

  3. Insérez des données dans la table. Il 2 façons dont vous pouvez le faire:

    • Insérer fichier entier en une seule fois

OU

  • Insérer un sous-ensemble de lignes, alors assurez-vous qu'il est répliqué: créer Package SSIS qui, pour chaque ligne de 100k ou 1M, les insère, puis exécute l'agent de réplication.

Voici une astuce: lignes insérées avec Bulk_Insert ou BCP ne sont pas pris en charge par l'agent de réplication. Donc, avant d'exécuter l'agent de réplication, exécutez sp_addtabletocontents Table_Name ou exécutez BCP avec l'option FIRE_TRIGGERS.

4. Exécuter SET IDENTITY_INSERT OFF` - pour interdire l'insertion de valeurs d'identité

Vous pouvez le tester sur 10 lignes d'échantillons, puis réinitialiser les deux systèmes.

Questions connexes