Nous avions deux bases de données sur une instance SQL Server 2005 avec réplication transactionnelle entre elles (3 tables comme articles). Ce serveur a agi à la fois comme éditeur et distributeur.
Ensuite, le RAID sur le serveur a échoué. Cependant, nous avons réussi à détacher et à copier presque tous les .mdf
fichiers avant le crash.
Une fois le système restauré, nous avons réinstallé SQL Server, restauré les bases de données système (maître, modèle, msdb) et placé les .mdf
fichiers sur les mêmes chemins. Alors ça a commencé.
Le problème est apparu avec la réplication. Le dossier Publications locales était vide, bien que le dossier Abonnements locaux contienne l'abonnement en question. Quand j'ai essayé d'ajouter une nouvelle publication, j'ai eu:
L'Assistant Nouvelle publication a rencontré une ou plusieurs erreurs lors de la récupération des noms de publication.
Une exception s'est produite lors de l'exécution d'une instruction ou d'un lot Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)
Nom d'objet non valide «dbo.syspublications». (Microsoft SQL Server, erreur: 208)
J'ai décidé d'essayer de supprimer l'abonnement gauche (finalement j'ai réussi à le faire) et de désactiver la publication et la distribution sur le serveur, ce qui m'a donné:
SQL Server n'a pas pu désactiver la publication et la distribution sur 'someserver'.
Nom d'objet non valide «dbo.syssubscriptions». Le nombre de transactions après EXECUTE indique qu'une instruction COMMIT ou ROLLBACK TRANSACTION est manquante. Nombre précédent = 0, nombre actuel = 1. Le nombre de transactions après EXECUTE indique qu'une instruction COMMIT ou ROLLBACK TRANSACTION est manquante. Nombre précédent = 0, nombre actuel = 1. Le nombre de transactions après EXECUTE indique qu'une instruction COMMIT ou ROLLBACK TRANSACTION est manquante. Nombre précédent = 0, nombre actuel = 1. Le nombre de transactions après EXECUTE indique qu'une instruction COMMIT ou ROLLBACK TRANSACTION est manquante. Nombre précédent = 0, nombre actuel = 1. Le nombre de transactions après EXECUTE indique qu'une instruction COMMIT ou ROLLBACK TRANSACTION est manquante. Nombre précédent = 0, nombre actuel = 1. Le contexte de la base de données a été remplacé par «maître». (Microsoft SQL Server, erreur: 208)
Il semble que certaines informations distribution
n'aient pas été récupérées à partir des sauvegardes de la base de données système (il est probable que la base de données manque quelque chose).
J'ai également essayé de suivre la réponse donnée en ne pouvant pas désactiver la publication et la distribution . Mais sans succès. J'ai essayé de créer à la syspublications
fois dans master
et distribution
, mais rien n'a changé.
Alors, comment faire fonctionner la réplication sur ce serveur?
J'ai essayé de publier une autre base de données sur le serveur et cela a fonctionné. Le problème semble donc être lié à la base de données publiée. Comment puis-je l'effacer pour gérer la création d'une nouvelle publication dessus?
System Tables
le sous-dossier de la base de données problématique manque les tables de réplication, qui sont créées, lorsqu'une base de données est publiée.
Dans le moniteur de réplication, je peux voir ces anciens abonnements, alors qu'ils ne sont pas disponibles dans le dossier de réplication .