J'ai restauré une base de données à partir d'une sauvegarde. La base de données utilise la réplication pour publier sur un autre serveur. En supposant que la restauration de la base de données interromprait la réplication, j'ai essayé de supprimer la réplication et de la recréer (nous avons un script pour la recréer à partir de zéro). Je ne sais pas exactement ce que j'ai fait, mais maintenant il est dans un état complètement foiré et je ne peux pas le réparer.
Tout d'abord, j'essaye de me débarrasser de l'abonnement (sur le serveur éditeur):
EXEC sp_dropsubscription @publication = 'PublicationName', @article = N'all', @subscriber = 'SubscriberServerName'
Cela semble fonctionner. SELECT * FROM syssubscriptions
ne montre aucun résultat. En regardant sur le serveur d'abonné, SSMS> {SubscriberServer}> Réplication> Abonnements locaux - l'abonnement n'est pas là.
Alors j'essaie de supprimer la publication. SSMS> {Server}> Réplication> Publications locales> {PublicationName}> Supprimer. Cela donne le message d'erreur suivant:
Could not delete publication 'PublicationName'.
Could not drop article. A subscription exists on it.
Changed database context to 'DatabaseName'. (Microsoft SQL Server, Error: 14046)
Ok, donc j'essaye de laisser tomber les articles:
EXEC sp_droparticle @publication = 'PublicationName', @article = N'all'
et obtenez cette erreur:
Invalidated the existing snapshot of the publication. Run the Snapshot Agent again to generate a new snapshot.
Msg 14046, Level 16, State 1, Procedure sp_MSdrop_article, Line 75
Could not drop article. A subscription exists on it.
Ok, donc j'essaye de démarrer l'agent Snapshot et j'obtiens cette exception SQL interne:
The SQL command 'sp_MSactivate_auto_sub' had returned fewer rows than expected by the replication agent.
J'ai donc essayé une autre méthode de suppression de l'article, DELETE FROM sysarticles
. Cela semble avoir fonctionné - je me suis maintenant débarrassé des articles, mais j'obtiens toujours la même erreur «Impossible de supprimer la publication car il existe au moins un abonnement pour cette publication» lorsque j'essaie de supprimer la publication.
J'ai également redémarré SQL Server - n'a pas aidé.
Je ne sais pas ce qui se passe ici et comment y remédier?
BTW c'est ce qui se passe lorsque vous donnez à un développeur de logiciels qui en sait juste assez pour être dangereux les clés de la base de données. Heureusement, ce n'est pas un environnement de production ...
la source
MSPublications
dans ladistribution
base de données révèle que la publication a bel et bien disparu. Est-ce attendu?J'ai eu un problème avec la réplication et l'ai résolu avec ce
Cela et:
Sont les sauveurs lors du nettoyage des réplications en désordre.
la source
La restauration de la base de données interrompt la réplication, c'est donc normal. De plus, la plupart des autres messages d'erreur ne sont que des suivis car vous n'avez pas pu supprimer tous les abonnements (ou du moins SQL le pense).
Vous savez que vous avez votre éditeur (la base de données source), et au moins un abonné (la base de données de destination), et qu'il s'agit de deux serveurs différents. Je veux juste mentionner qu'il y a aussi un distributeur qui se trouve sur l'un ou l'autre de ces serveurs, et probablement dans une base de données nommée distribution. Parfois, il contient des informations utiles et parfois les choses tombent parce que les informations entre les trois ne correspondent pas.
Quoi qu'il en soit, lorsque vous avez vérifié les abonnés, avez-vous également vérifié cette section sur le serveur de l' éditeur pour vous assurer qu'il n'y avait rien d'autre dans la liste? Si vous en trouvez, vous pouvez essayer de le supprimer manuellement:
Mais en supposant qu'ils ont vraiment disparu, essayez ceci sur la base de données de l'éditeur:
Tiens nous au courant de comment ça se passe. La réplication quand elle entre dans cet état me confond, moi et les autres bons DBA, rien à voir avec le fait d'être développeur :-)
la source
La seule façon dont j'ai pu me débarrasser des artefacts de réplication fantôme est de supprimer les abonnements, les articles et les publications. S'il existe toujours des abonnements fantômes, recréez la publication, y compris l'abonné fantôme. Cela semble fonctionner avec les anciennes versions en particulier.
la source
c'est ce que je fais normalement quand j'ai une publication qui est foirée.
c'est un peu moche mais ça a fonctionné pour moi à plusieurs reprises sur des environnements différents. quelles sont les causes? qui est parfois difficile de le comprendre, le mieux est parfois repartir de zéro, mais même pour que vous devez éclaircir
all
laresiduals
de la publication actuelle qui est défectueuse.juste pour le mettre en contexte:
Voici ce que je vois du moniteur de réplication:
et lorsque j'utilise mon propre moniteur de réplication à l'aide de T-SQL :
vous pouvez voir 2 lignes sur la dernière case ci-dessous - et l'une d'entre elles ne devrait pas être là:
la même chose quand j'utilise ce script:
D'abord, vous faites ce qui est indiqué dans les autres réponses ci-dessus, si cela fonctionne , c'est bien, cela fonctionne parfois, problème résolu.
ce serait plus ou moins ça:
Maintenant, pour nous débarrasser complètement de cette publication, nous allons commencer par nous connecter au buscriber, puis à l'éditeur, puis au distributeur selon le script ci-dessous:
à ce stade, recréez la publication comme vous le feriez normalement
puis mettez l'instantané à exécuter
attendez qu'il ait fini de générer l'instantané
MAYBE YOU DONT NEED TO RUN THE SNAP
- essayez de l'without
exécuter en premier, la plupart du temps cela fonctionne, vous pouvez également ajouter seulement 1-2small
articles à la publication afin que le snap s'exécute rapidementmais si vous exécutez l'instantané, vous devez attendre qu'il se termine avant de passer à l'étape suivante -
drop the publication
après cela, vous générez les scripts
drop that publication
selon l'image ci-dessous:après cela, espérons-le, lorsque vous exécutez nos scripts originaux ci - dessus , ou regardez le moniteur de réplication, vous ne verrez pas la publication défectueuse, seulement les bonnes, dans mon cas juste une:
la source
J'ai eu le même problème sur ma box de pré-production, la commande
semblent avoir travaillé sur le nettoyage de fausses entrées d'abonnement ...
la source