2009-06-12 10 views
2

Existe-t-il un moyen de répliquer une base de données SQL Server sans supprimer les suppressions vers les abonnés?Réplication SQL Server sans suppressions?

+0

Avez-vous essayé mes suggestions? – Eric

+0

Et quoi, priez-vous, devrait se produire si un supprimer une ligne d'une table, puis réinsérer avec la même clé, mais certains des autres champs de données différentes? – Joe

Répondre

0

Pour ce faire .... Déposer l'article. Créez une nouvelle procédure stockée dans la base de données correspondante qui imite la procédure de stockage système (sp_del ...) et contient le même paramètre mais ne fait rien. Ajoutez à nouveau l'article ... et définissez la procédure de suppression de magasin sous les propriétés de l'article à la nouvelle procédure stockée de suppression que vous avez créée ....

Ou vous pouvez sélectionner Ne pas répliquer les instructions de suppression .... Je pense que fonctionne mais je ne l'ai pas essayé.

+0

Attention! J'ai travaillé avec une solution comme celle-ci, et nous avons eu de très gros problèmes lorsque la réplication était en difficulté et une réinitialisation était nécessaire. Je vais poster une réponse séparée à cette question sur ce que nous avons utilisé à la place. –

1

Vous ne mentionnez pas la version de SQL Server que vous utilisez, mais Andy Warren a écrit un article sur la configuration du comportement INSERT, UPDATE et DELETE dans SQL Server 2005. Vous pouvez le configurer via l'interface graphique, en suivant ses instructions :

http://www.sqlservercentral.com/articles/Replication/3202/

+0

Nous utilisons Sql Server 2005 – suedeuno

+0

Great - J'ai repensé la question. Avez-vous vérifié l'article d'Andy? –

1

Il est tentant de « intervenir » dans une réplication normale et « désarmer » le côté de l'abonné supprimer des procédures stockées, mais cela ne laisse aucune possibilité de se remettre de l'échec de la réplication. Si la réplication tente de récupérer, une réinitialisation peut être nécessaire et cela supprime toutes les données «périmées» que l'agent de réplication considère comme supprimées. Une alternative consiste à utiliser une réplication normale et à utiliser un script qui génère des déclencheurs d'insertion et de mise à jour sur toutes les tables de la base de données d'abonnés, qui insèrent/mettent à jour ces données dans une troisième base de données. De cette façon, le troisième DB collectera toutes les données qui ont existé, le second DB peut réinitialiser son abonnement s'il le faut (rappelez-vous que les insertions en masse n'appellent pas le déclencheur d'insertion et vérifient les nouvelles données et ajoutez-le à la troisième DB), et le premier DB n'a pas à effectuer le travail supplémentaire que les déclencheurs sont.

Questions connexes