So stellen Sie die Replikation nach einem Serverabsturz wieder her

8

Wir hatten zwei Datenbanken auf einer SQL Server 2005-Instanz mit Transaktionsreplikation zwischen ihnen (3 Tabellen als Artikel). Dieser Server fungierte sowohl als Herausgeber als auch als Verteiler.

Dann ist das RAID auf dem Server fehlgeschlagen. Es ist uns jedoch gelungen, fast alle .mdfDateien vor dem Absturz zu trennen und zu kopieren .

Nach der Wiederherstellung des Systems haben wir SQL Server neu installiert, Systemdatenbanken (Master, Modell, MSDB) wiederhergestellt und die .mdfDateien auf denselben Pfaden abgelegt. Also fing es an.

Das Problem trat bei der Replikation auf. Der Ordner " Lokale Veröffentlichungen " war leer, obwohl der Ordner " Lokale Abonnements " das betreffende Abonnement enthielt. Als ich versuchte, eine neue Publikation hinzuzufügen, bekam ich:

Der Assistent für neue Veröffentlichungen hat beim Abrufen von Veröffentlichungsnamen einen oder mehrere Fehler festgestellt.

Beim Ausführen einer Transact-SQL-Anweisung oder eines Batch-Stapels ist eine Ausnahme aufgetreten. (Microsoft.SqlServer.ConnectionInfo)

Ungültiger Objektname 'dbo.syspublications'. (Microsoft SQL Server, Fehler: 208)

Ich beschloss, das linke Abonnement zu entfernen (was mir schließlich gelang) und die Veröffentlichung und Verteilung auf dem Server zu deaktivieren.

SQL Server konnte die Veröffentlichung und Verteilung auf "someserver" nicht deaktivieren.

Ungültiger Objektname 'dbo.syssubscriptions'. Die Anzahl der Transaktionen nach EXECUTE zeigt an, dass eine Anweisung COMMIT oder ROLLBACK TRANSACTION fehlt. Vorherige Anzahl = 0, aktuelle Anzahl = 1. Die Anzahl der Transaktionen nach EXECUTE zeigt an, dass eine COMMIT- oder ROLLBACK TRANSACTION-Anweisung fehlt. Vorherige Anzahl = 0, aktuelle Anzahl = 1. Die Anzahl der Transaktionen nach EXECUTE zeigt an, dass eine COMMIT- oder ROLLBACK TRANSACTION-Anweisung fehlt. Vorherige Anzahl = 0, aktuelle Anzahl = 1. Die Anzahl der Transaktionen nach EXECUTE zeigt an, dass eine COMMIT- oder ROLLBACK TRANSACTION-Anweisung fehlt. Vorherige Anzahl = 0, aktuelle Anzahl = 1. Die Anzahl der Transaktionen nach EXECUTE zeigt an, dass eine COMMIT- oder ROLLBACK TRANSACTION-Anweisung fehlt. Vorherige Anzahl = 0, aktuelle Anzahl = 1. Der Datenbankkontext wurde in 'master' geändert. (Microsoft SQL Server, Fehler: 208)

Es scheint, dass einige Informationen aus den Systemdatenbanksicherungen nicht wiederhergestellt wurden (wahrscheinlich distributionfehlt in der Datenbank etwas).

Außerdem habe ich versucht, der Antwort zu folgen, dass die Veröffentlichung und Verteilung nicht deaktiviert werden konnte . Aber ohne Erfolg. Ich habe versucht, syspublicationssowohl in masterals auch zu erstellen distribution, aber nichts hat sich geändert.

Wie kann ich die Replikation auf diesem Server ausführen?

Es wurde versucht, eine andere Datenbank auf dem Server zu veröffentlichen, und es hat funktioniert. Das Problem scheint also mit der veröffentlichten Datenbank verbunden zu sein. Wie kann ich es löschen, um eine neue Publikation darüber zu erstellen?

System Tables Im Unterordner der Problemdatenbank fehlen die Replikationstabellen, die beim Veröffentlichen einer Datenbank erstellt werden.

Im Replikationsmonitor werden diese alten Abonnements angezeigt, obwohl sie nicht im Replikationsordner verfügbar sind .

horgh
quelle

Antworten:

4

Am Ende habe ich einfach getan, was der Server wollte, dh alle "Veröffentlichungstabellen" (* dbo.MSpeer _ ** und * dbo.sys **) in der problematischen Datenbank (diejenige, die der Herausgeber war) über die Skripttabelle erstellt As -> CREATE To Dialog. Dank dieses Servers konnte ich das Veröffentlichen und Verteilen deaktivieren. Dann musste ich nur noch die Replikation neu konfigurieren.

Hoffe, wenn es das nächste Mal abstürzt (eigentlich hoffe ich nicht), sind wir klug genug, Tabellen, die an der Replikation beteiligt sind, gründlich zu sichern.


Zusätzliche Informationen von Zane , ursprünglich in einem Kommentar hinterlassen:

Die Tabellen dbo.MSpeer_ * und dbo.sys * können auch erstellt werden, indem der Distributor / Publisher auf einem anderen Server mit installiertem SQL Server konfiguriert wird. Dadurch werden diese Tabellen in der Datenbank erstellt, die Sie für die Veröffentlichung festgelegt haben. Siehe -> Tabellen -> Systemtabellen in SSMS.

Generieren Sie dann die Schemas für alle diese Tabellen und erstellen Sie diese Tabellen in der problematischen Datenbank, mit der Sie die Verteilung und Veröffentlichung deaktivieren und den Verteiler neu konfigurieren können.

horgh
quelle