Freigeben über


Behandeln von Problemen mit der SQL-Datensynchronisierung

Gilt für: Azure SQL-Datenbank

Wichtig

SQL-Datensynchronisierung wird am 30. September 2027 ausgemustert. Erwägen Sie die Migration zu alternativen Datenreplikations-/Synchronisierungslösungen.

Dieser Artikel beschreibt, wie Sie bekannte Probleme mit der SQL-Datensynchronisierung in Azure behandeln. Sofern eine Problemlösung verfügbar ist, ist sie hier angegeben.

Eine Übersicht über die SQL-Datensynchronisierung finden Sie unter Was ist die SQL-Datensynchronisierung für Azure?

Azure SQL Managed Instance oder Azure Synapse Analytics werden nicht von SQL-Datensynchronisierung unterstützt.

Probleme bei der Synchronisierung

Die Synchronisierung lokaler Datenbanken, die dem Client-Agent zugeordnet sind, ist über die Portalbenutzeroberfläche nicht erfolgreich.

Die Synchronisierung lokaler Datenbanken, die dem Client-Agent zugeordnet sind, ist über die Benutzeroberfläche des SQL-Datensynchronisierungsportals nicht erfolgreich. Auf dem lokalen Computer, auf dem der Agent ausgeführt wird, enthält das Ereignisprotokoll Fehler vom Typ System.IO.IOException. Diese Fehler weisen darauf hin, dass auf dem Datenträger nicht genügend Speicherplatz zur Verfügung steht.

  • Ursache. Auf dem Laufwerk ist nicht genügend Speicherplatz verfügbar.

  • Lösung. Schaffen Sie mehr Platz auf dem Laufwerk, auf dem sich das Verzeichnis „%TEMP%“ befindet.

Meine Synchronisierungsgruppe ist im Verarbeitungszustand hängengeblieben.

Eine Synchronisierungsgruppe in der SQL-Datensynchronisierung bleibt lange Zeit im Verarbeitungszustand. Sie reagiert nicht auf den stop-Befehl, und die Protokolle zeigen keine neuen Einträge.

Folgende Bedingungen können dazu führen, dass eine Synchronisierungsgruppe im Verarbeitungszustand hängenbleibt:

  • Ursache. Der Client-Agent ist offline.

  • Lösung. Vergewissern Sie sich, dass der Client-Agent online ist, und versuchen Sie es dann noch mal.

  • Ursache. Der Client-Agent wurde deinstalliert oder ist aus einem anderen Grund nicht vorhanden.

  • Lösung. Falls der Client-Agent deinstalliert wurde oder nicht vorhanden ist, gehen Sie wie folgt vor:

    1. Entfernen Sie die Agent-XML-Datei aus dem Installationsordner der SQL-Datensynchronisierung (sofern die Datei vorhanden ist).
    2. Installieren Sie den Agent auf einem lokalen Computer (hierbei kann es sich um denselben oder einen anderen Computer handeln). Übermitteln Sie dann den Agent-Schlüssel, der im Portal für den als offline angezeigten Agent generiert wurde.
  • Ursache. Der SQL-Datensynchronisierungsdienst wurde beendet.

  • Lösung. Starten Sie den SQL-Datensynchronisierungsdienst neu.

    1. Suchen Sie im Menü Start nach Dienste.
    2. Klicken Sie in den Suchergebnissen auf Dienste.
    3. Suchen Sie den SQL-Datensynchronisierungsdienst.
    4. Falls der Status Beendet lautet, klicken Sie mit der rechten Maustaste auf den Dienstnamen, und wählen Sie dann Starten aus.

Hinweis

Wenn die obigen Informationen nicht ausreichen, um Ihre Synchronisierungsgruppe aus dem Verarbeitungszustand zu lösen, kann der Microsoft-Support den Status der Synchronisierungsgruppe zurücksetzen. Um den Status der Synchronisierungsgruppe zurücksetzen zu lassen, erstellen Sie einen Beitrag auf der Microsoft F&A-Seite für Azure SQL-Datenbank. Teilen Sie in diesem Beitrag Ihre Abonnement-ID und die ID der Synchronisierungsgruppe mit, die zurückgesetzt werden soll. Ein Microsoft-Supportmitarbeiter antwortet auf Ihren Beitrag und informiert Sie, wenn der Status zurückgesetzt wurde.

Meine Tabellen enthalten fehlerhafte Daten.

Wenn Sie Tabellen mit gleichem Namen, aber aus verschiedenen Datenbankschemas, in eine Synchronisierung einschließen, werden nach der Synchronisierung falsche Daten in den Tabellen angezeigt.

  • Ursache. Der Bereitstellungsprozess der SQL-Datensynchronisierung verwendet für Tabellen gleichen Namens, die jedoch aus unterschiedlichen Schemas stammen, dieselben Nachverfolgungstabellen. Aus diesem Grund spiegeln sich Änderungen in beiden Tabellen in der gleichen Nachverfolgungstabelle wider. Dies führt zu falschen Daten während der Synchronisierung.

  • Lösung. Achten Sie darauf, dass sich die Namen der zu synchronisierenden Tabellen unterscheiden, auch wenn sie zu unterschiedlichen Schemas in der Datenbank gehören.

Nach einer erfolgreichen Synchronisierung sind inkonsistente Primärschlüsseldaten vorhanden.

Eine Synchronisierung wird als erfolgreich gemeldet, und das Protokoll enthält keine fehlerhaften oder übersprungenen Zeilen enthält, aber Sie stellen fest, dass Primärschlüsseldaten in den Datenbanken in der Synchronisierungsgruppe nicht konsistent sind.

  • Ursache. Dieses Ergebnis ist programmbedingt. Änderungen in einer Primärschlüsselspalte führen zu inkonsistenten Daten in den Zeilen, in denen der Primärschlüssel geändert wurde.

  • Lösung. Achten Sie zur Vermeidung dieses Problems darauf, dass keine Daten in einer Primärschlüsselspalte geändert werden. Um das Problem zu beheben, löschen Sie die Zeile mit den inkonsistenten Daten von allen Endpunkten in der Synchronisierungsgruppe. Fügen Sie die Zeile dann erneut ein.

Die Leistung hat sich erheblich verschlechtert.

Die Leistung verschlechtert sich deutlich – unter Umständen so weit, dass Sie nicht einmal mehr die Benutzeroberfläche der Datensynchronisierung starten können.

  • Ursache. Dies ist höchstwahrscheinlich auf eine Synchronisierungsschleife zurückzuführen. Eine Synchronisierungsschleife tritt auf, wenn eine Synchronisierung von Synchronisierungsgruppe A eine Synchronisierung von Synchronisierungsgruppe B auslöst, die dann eine Synchronisierung von Synchronisierungsgruppe A auslöst. Die tatsächliche Situation kann komplexer sein und mehr als zwei Synchronisierungsgruppen in der Schleife umfassen. Das Problem ist hier ein zirkuläres Auslösen der Synchronisierung, das dadurch verursacht wird, dass Synchronisierungsgruppen sich überlappen.

  • Lösung. Die beste Lösung ist Prävention. Vergewissern Sie sich, dass Ihre Synchronisierungsgruppen keine Zirkelbezüge enthalten. Eine Zeile, die von einer Synchronisierungsgruppe synchronisiert wird, darf nicht von einer anderen Synchronisierungsgruppe synchronisiert werden.

Mit wird eine Meldung angezeigt, die besagt, dass ich den Wert NULL nicht in die Spalte <Spalte> einfügen kann, da die Spalte keine NULL-Werte zulässt. Was bedeutet dies, und wie kann ich das Problem beheben?

Diese Fehlermeldung besagt, dass eines der beiden folgenden Probleme aufgetreten ist:

  • Eine Tabelle weist keinen Primärschlüssel auf. Um dieses Problem zu beheben, fügen Sie allen Tabellen, die Sie synchronisieren möchten, einen Primärschlüssel hinzu.
  • Es gibt eine WHERE-Klausel in Ihrer CREATE INDEX-Anweisung. Die Datensynchronisierung verarbeitet diese Bedingung nicht. Um dieses Problem zu beheben, entfernen Sie die WHERE-Klausel, oder nehmen Sie die Änderungen an allen Datenbanken manuell vor.

Wie geht die Datensynchronisierung mit Zirkelbezügen um? Diese liegen vor, wenn dieselben Daten in mehreren Synchronisierungsgruppen synchronisiert werden und sich daher ständig ändern.

Die Datensynchronisierung behandelt keine Zirkelbezüge. Vermeiden Sie sie deshalb unbedingt.

Probleme mit dem Client-Agent

Informationen zur Problembehandlung beim Client-Agent finden Sie unter Beheben von Problemen mit dem Datensynchronisierungs-Agent.

Probleme bei Setup und Wartung

Ich erhalte eine Meldung mit dem Hinweis, dass auf dem Datenträger kein Speicherplatz mehr zur Verfügung steht.

  • Ursache. Die Meldung, dass auf dem Datenträger kein Speicherplatz mehr zur Verfügung steht, kann angezeigt werden, wenn übrig gebliebene Dateien gelöscht werden müssen. Dies kann durch eine Virenschutzsoftware verursacht werden oder daran liegen, dass während Löschversuchen Dateien geöffnet waren.

  • Lösung. Löschen Sie die Synchronisierungsdateien, die sich im Ordner „%temp%“ befinden, manuell (del \*sync\* /s). Löschen Sie dann die Unterverzeichnisse im Ordner „%temp%“.

Wichtig

Löschen Sie keine Dateien, während eine Synchronisierung ausgeführt wird.

Ich kann meine Synchronisierungsgruppe nicht löschen.

Der Versuch, eine Synchronisierungsgruppe zu löschen, ist nicht erfolgreich. Jedes der folgenden Szenarien kann dazu führen, dass eine Synchronisierungsgruppe sich nicht löschen lässt:

  • Ursache. Der Client-Agent ist offline.

  • Lösung. Vergewissern Sie sich, dass der Client-Agent online ist, und versuchen Sie es dann noch mal.

  • Ursache. Der Client-Agent wurde deinstalliert oder ist aus einem anderen Grund nicht vorhanden.

  • Lösung. Falls der Client-Agent deinstalliert wurde oder nicht vorhanden ist, gehen Sie wie folgt vor:
    a. Entfernen Sie die Agent-XML-Datei aus dem Installationsordner der SQL-Datensynchronisierung (sofern die Datei vorhanden ist).
    b. Installieren Sie den Agent auf einem lokalen Computer (hierbei kann es sich um denselben oder einen anderen Computer handeln). Übermitteln Sie dann den Agent-Schlüssel, der im Portal für den als offline angezeigten Agent generiert wurde.

  • Ursache. Eine Datenbank ist offline.

  • Lösung. Stellen Sie sicher, dass alle Datenbanken online geschaltet sind.

  • Ursache. Die Synchronisierungsgruppe führt einen Bereitstellungs- oder Synchronisierungsvorgang aus.

  • Lösung. Warten Sie, bis der Bereitstellungs- oder Synchronisierungsvorgang beendet ist, und versuchen Sie dann erneut, die Synchronisierungsgruppe zu löschen.

Ich kann die Registrierung einer SQL Server-Datenbank nicht aufheben.

  • Ursache. Wahrscheinlich versuchen Sie, die Registrierung einer bereits gelöschten Datenbank aufzuheben.

  • Lösung. Wenn Sie die Registrierung einer SQL Server-Datenbank aufheben möchten, wählen Sie die Datenbank und anschließend Löschen erzwingen aus.

    Sollte die Datenbank dadurch nicht aus der Synchronisierungsgruppe entfernt werden, gehen Sie folgendermaßen vor:

    1. Beenden Sie den Client-Agent-Hostdienst, und starten Sie ihn neu:
      a. Klicken Sie auf das Menü Start.
      b. Geben Sie services.msc in das Suchfeld ein.
      c. Doppelklicken Sie im Ergebnisbereich im Abschnitt Programme auf Dienste.
      d. Klicken Sie mit der rechten Maustaste auf den SQL-Datensynchronisierungsdienst.
      e. Falls der Dienst ausgeführt wird, beenden Sie ihn.
      f. Klicken Sie mit der rechten Maustaste auf den Dienst, und wählen Sie Starten aus.
      g. Überprüfen Sie, ob die Datenbank immer noch registriert ist. Falls sie nicht mehr registriert ist, sind keine weiteren Schritte erforderlich. Fahren Sie andernfalls mit dem nächsten Schritt fort.
    2. Öffnen Sie die Client-Agent-App (SqlAzureDataSyncAgent).
    3. Wählen Sie Anmeldeinformationen bearbeiten aus, und geben Sie die Anmeldeinformationen für die Datenbank ein.
    4. Fahren Sie mit der Aufhebung der Registrierung fort.

Ich bin nicht zum Starten von Systemdiensten berechtigt.

  • Ursache. Dieser Fehler tritt in zwei Situationen auf:

    • Der Benutzername/das Kennwort ist falsch.
    • Das angegebene Benutzerkonto verfügt nicht über ausreichende Berechtigungen für die Anmeldung als Dienst.
  • Lösung. Erteilen Sie dem Benutzerkonto die Berechtigung für die Anmeldung als Dienst.

    1. Wechseln Sie zu Start>Systemsteuerung>Verwaltung>Lokale Sicherheitsrichtlinie>Lokale Richtlinien>Zuweisen von Benutzerrechten.
    2. Wählen Sie Anmelden als Dienst aus.
    3. Klicken Sie im Dialogfeld Eigenschaften auf das Benutzerkonto.
    4. Klicken Sie auf Apply (Anwenden) und dann auf OK.
    5. Schließen Sie alle Fenster.

Eine Datenbank hat den Status „Veraltet“.

  • Ursache. Datenbanken, die mindestens 45 Tage vom Dienst getrennt waren (gemessen ab dem Zeitpunkt, zu dem die Datenbank offline geschaltet wurde), werden von der SQL-Datensynchronisierung entfernt. Eine Datenbank, die online geschaltet wird, nachdem sie mindestens 45 Tage offline war, weist den Status Veraltet auf.

  • Lösung. Sie können den Status Veraltet vermeiden, indem Sie sicherstellen, dass keine Ihrer Datenbanken 45 Tage oder länger offline ist.

    Wenn eine Datenbank den Status Veraltet aufweist, gehen Sie folgendermaßen vor:

    1. Entfernen Sie die Datenbank mit dem Status Veraltet aus der Synchronisierungsgruppe.
    2. Fügen Sie die Datenbank wieder der Synchronisierungsgruppe hinzu.

    Warnung

    Änderungen, die an der Datenbank vorgenommen wurden, während sie offline war, gehen verloren.

Eine Synchronisierungsgruppe hat den Status „Veraltet“.

  • Ursache. Falls eine Änderung innerhalb der gesamten Aufbewahrungszeit von 45 Tagen nicht angewendet werden kann, kann eine Synchronisierungsgruppe den Status „Veraltet“ erhalten.

  • Lösung. Um den Status Veraltet zu vermeiden, überprüfen Sie regelmäßig die Ergebnisse Ihrer Synchronisierungsaufträge in der Verlaufsanzeige. Untersuchen Sie alle Änderungen, die nicht angewendet werden konnten, und behandeln Sie die entsprechenden Probleme.

    Wenn eine Synchronisierungsgruppe den Status Veraltet aufweist, löschen Sie die Gruppe, und erstellen Sie sie dann neu.

Eine Synchronisierungsgruppe kann innerhalb von drei Minuten nach dem Deinstallieren oder Beenden des Agents nicht gelöscht werden.

Sie können eine Synchronisierungsgruppe nach dem Deinstallieren oder Beenden des zugeordneten Client-Agents für die SQL-Datensynchronisierung drei Minuten lang nicht löschen.

  • Lösung.

    1. Entfernen Sie eine Synchronisierungsgruppe, während die zugeordneten Synchronisierungs-Agents online sind (empfohlen).
    2. Falls der Agent installiert, aber offline ist, schalten Sie ihn auf dem lokalen Computer online. Warten Sie, bis der Agent im Portal der SQL-Datensynchronisierung als online angezeigt wird. Entfernen Sie dann die Synchronisierungsgruppe.
    3. Ist der Agent offline, weil er deinstalliert wurde, gehen Sie folgendermaßen vor:
      a. Entfernen Sie die Agent-XML-Datei aus dem Installationsordner der SQL-Datensynchronisierung (sofern die Datei vorhanden ist).
      b. Installieren Sie den Agent auf einem lokalen Computer (hierbei kann es sich um denselben oder einen anderen Computer handeln). Übermitteln Sie dann den Agent-Schlüssel, der im Portal für den als offline angezeigten Agent generiert wurde.
      c. Versuchen Sie, die Synchronisierungsgruppe zu löschen.

Was geschieht beim Wiederherstellen einer verloren gegangenen oder beschädigten Datenbank?

Wenn Sie eine verloren gegangene oder beschädigte Datenbank aus einer Sicherung wiederherstellen, stellt sich möglicherweise keine Konvergenz der Daten in den Synchronisierungsgruppen ein, zu denen die Datenbank gehört.

Fehlermeldung "Sync0022-Kunde hat keine Autorisierung zum Ausführen der Aktion "syncGroupOperationResults/read"

Wenn Sie die Fehlermeldung Sync0022 Customer does not have authorization to perform action 'syncGroupOperationResults/read' erhalten, weist das Konto, das den Vorgang versucht, auf Abonnementebene keine ausreichenden Berechtigungen auf. Hinzufügen:

  • "Microsoft.Sql/locations/syncMemberOperationResults/read"
  • "Microsoft.Sql/locations/syncAgentOperationResults/read"
  • "Microsoft.Sql/locations/syncGroupOperationResults/read"

Weitere Informationen finden Sie unter Rollenbasierte Zugriffssteuerung für Ressourcenanbieteroperationen und SQL-Datensynchronisierung: Datenbankkonten mit geringstmöglichen Rechten.