-
SQL2000 - Réplication
Bonjour,
je suis confronté à une problématique qui me paraît assez étrange. J'ai mis en place une réplication de base. Jusque là pas de soucis, les modifcations dans ma base EDITEUR (Insert, Update, Delete) sont bien impactées dans ma base ABONNEE.
Par contre, dès lors qu'une ligne est supprimée dans ma base ABONNEE, l'agent de Distribution se met en échec, et la réplication ne fonctionne plus, bien évidemment. Est-ce un comportemant normal ? Y a-t-il un moyen de contournement ou bien faut il s'assurer qu'il n'y aura absolument aucune modification dans la base ABONNEE ?
Je suis débutant dans ce domaine, il me manque peut-être certains concepts. :oops:
Merci d'avance.
Cordialement,
Jo
-
Comencez par indiquer le mode de réplication et l'architecture de la réplication : ou se trouve les éditeurs, la publication et les abonnés.
A +
-
oui effectivement je n'ai pas été très précis.
La réplication est en mode transactionnel.
l'architecture est une architecture de test, les trois bases, EDITEUR, DISTRIBUTION et ABONNEE sont sur un même serveur.
-
C'est donc parfaitement normal. Dans ce mode une base ne pout être à la fois abonné et éditeur. Ce mode de réplication est UNIDIRECTIONNEL. La base cible (abonnée) doit être en lecture seule en principe ou bien les tuples mis à jour ne doivent pas eux-mêmes faire l'objet d'une publication.
Si vous voulez tout répliquer dans tous les sens (ce qui n'est jamais conseillé) il vous faut une réplication de fusion. Cela implique que vous aurez TOUJOURS des conflits de réplication, que vous pourrez résoudre, soit de manière automatique (règle de priorité par défaut) soit de manière fonctionnelle en récrivant les triggers de réplication.
Dernier élément, quelque soit le mode de réplication, une base de données se doit d'être PARFAITEMENT normalisée, c'est à dire au moins 3NF + BNCF.
A +
-
Merci pous vos réponses rapides.
je crois que je n'ai pas dû être très clair dans mes explications, je suis désolé. :oops:
J'ai bien 3 bases distinctes, une base editeur (Pub par exemple), une base ditribution, et une base abonnee (Abo_Pub par exemple). Ces trois sont cependant sur le même serveur, même s'il est conseillé de mettre la base de distribution sur un serveur dédié.
La réplication que je souhaite est donc bien unidirectionnelle, de ma base Pub vers Abo_Pub. Ce qui se semble parfaitement fonctionner, les lignes rajoutées, modifiées dans Pub se retrouvent bien dans Abo_Pub.
Par contre dès q'une ligne d'une table de la base Abo_Pub est supprimée (à prioiri ça ne devrait jamais être le cas, mais on ne sait jamais !), tout se plante ...
J'ai donc choisi la réplication transactionnelle, justement parceque je ne voulais pas de réplication dans les deux sens, et qu'il existe une option de Snapshot lors de la première exécution.