Warum erhalte ich die Meldung "Der erste Schnappschuss zur Veröffentlichung ist noch nicht verfügbar"?


7

Wir verwenden Transaktionsreplikationen mit aktualisierbaren Abonnements. 1 Verlag, 1 Abonnent.

Bei der SQL-Replikation trat am 06.03. Um 10 Uhr ein Einschränkungsfehler auf, da Personen in zwei verschiedenen Büros Daten eingaben, die gegen eine eindeutige Einschränkung verstießen. Total erwartet.

Am 12. März um 12:08 Uhr meldete SQL Replication diesen Fehler jedoch nicht mehr und sagte stattdessen:

"Der erste Schnappschuss für die Veröffentlichung 'TheDB' ist noch nicht verfügbar."

Warum sollte die Replikation nicht mehr wiederholt werden und stattdessen dieser Fehler ausgelöst werden? Jetzt müssen wir den Schnappschuss neu generieren.

  • Zu diesem Zeitpunkt wurden keine DB-Sicherungen oder -Wiederherstellungen durchgeführt
  • Der Snapshot wurde vor Monaten beim Abonnenten erfolgreich angewendet, als die Replikation ursprünglich eingerichtet wurde.
  • Es gibt eine Nachricht im Protokoll von 12:07 am 06.03

Anforderung zum Ausführen des Jobs COTOPSVR \ TheDB-TheDB-COTCPSVR \ DB-3 (von Benutzer CTOB \ Administrator) abgelehnt, da der Job bereits von einer Anforderung von Benutzer sa ausgeführt wird

  • Niemand hat um 12:06 Uhr manuell einen Job initiiert oder überhaupt etwas getan.

Irgendwelche Ideen? Ich weiß, wie ich das beheben kann ... Ich möchte verhindern, dass dies erneut geschieht.


Überprüfen Sie Ihre Agentenjobs und prüfen Sie, ob sie ausgeführt werden. Klicken Sie mit der rechten Maustaste auf die Veröffentlichung in SSMS und überprüfen Sie den Status des Snapshot-Agenten. Was sagen Sie?
Swasheck

Sie werden alle ausgeführt ... aber der Verlauf von Distributor zu Abonnent meldet diesen Fehler.
Jeff

Befinden sich Pub, Dist und Sub alle auf getrennten Instanzen?
Swasheck

Pub / Dist auf derselben Instanz. Teilnehmer auf einem Remote-Server.
Jeff

1
Nebenbei. Nach meiner Erfahrung ist mir aufgefallen, dass bei Problemen mit dem Unterbrechungsschema die Replikation möglicherweise unterbrochen wird.
Swasheck

Antworten:


4

Bei der grundlegenden Transaktionsreplikation gibt es eine Vielzahl von Agenten.

Hilfreicher MSDN-Artikel

Es gibt den Snapshot-Agenten, der für den ersten Snapshot von Daten und Schema verantwortlich ist. Dies kann so geplant werden, dass es in regelmäßigen Abständen ausgeführt wird (ich hatte meine alle 12 Stunden geplant).

Es gibt den Log Reader Agent , der die Transaktionsprotokolle liest und diejenigen, die zur Replikation markiert sind, an den Distributor sendet.

Schließlich gibt es den Distributionsagenten, der für das Verschieben der Snapshots und der Transaktionen vom Distributor zum Abonnenten verantwortlich ist.

Ihr Fehler weist Sie darauf hin, dass keine Transaktionen angewendet werden können, die für die Replikation auf den Abonnenten markiert sind, da der erste Snapshot (und / oder einer der nachfolgenden Snapshots) noch nicht angewendet wurde. Sie müssen Fehler beheben, warum dieser Snapshot nicht angewendet wird. Es gibt viele Gründe , warum es könnte passieren.

Hat der Verteilungsagent die Berechtigungen für das Verzeichnis verloren, das die Snapshot-Dateien enthält?

Gibt es eine Blockierungsaktivität auf dem Abonnenten , die dazu führt, dass der Snapshot langsam angewendet wird?

Haben Sie den Distributor und / oder Abonnenten überlastet, indem Sie alle Artikel aus einer großen veröffentlichten Datenbank gleichzeitig an alle Abonnenten gesendet haben?


1

Ich würde vermuten, dass Ihr Abonnement mit diesem Fehler feststeckte und keine neuen Transaktionen replizierte. Zu diesem Zeitpunkt fiel das Abonnement nach Ablauf der für diese Veröffentlichung festgelegten Transaktionsaufbewahrungsfrist zurück. Das Abonnement erkennt dann, dass replizierte Transaktionen, die es benötigt, nicht mehr verfügbar sind, da sie aus der Verteilungsdatenbank gelöscht wurden.

In diesem Fall wird angezeigt, dass das Abonnement mit einem Snapshot neu initialisiert werden muss.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.