Die ASCII-Funktion gibt unterschiedliche Ergebnisse in Verleger- und Abonnentendatenbanktabellen zurück.
Gilt für: SQL Server 2019
Dieser Artikel enthält Problemumgehungen für das Problem, dass die Funktion in den ASCII
Datenbanktabellen Verleger und Abonnenten unterschiedliche Ergebnisse zurückgibt.
Problembeschreibung
Stellen Sie sich folgendes Szenario vor:
Sie verwenden die Transaktions- oder Mergereplikation in SQL Server 2019.
Das anfängliche Schema und die Daten werden über die Replikations-Momentaufnahmen-Agent angewendet.
In der Verlegerdatenbank enthält eine Spalte, die als Zeichendatentyp definiert ist, einen NULL-Wert – ASCII-Zeichen 0
char(0)
.
Wenn Sie in diesem Szenario die ASCII
-Funktion verwenden, um die Spalte in den Datenbanktabellen Verleger und Abonnenten zu konvertieren, werden unterschiedliche Ergebnisse zurückgegeben. Sie können das folgende Beispiel verwenden:
Konvertieren Sie die Spalte (
col1
) in der Verlegerdatenbanktabelle:SELECT id, col1, ASCII(col1) FROM PublisherTable
Konvertieren Sie die Spalte (
col1
) in der Datenbanktabelle des Abonnenten:SELECT id, col1, ASCII(col1) FROM SubscriberTable
Problemumgehung
Führen Sie die folgenden Schritte aus, um dieses Problem bei der Transaktionsreplikation zu umgehen:
Öffnen Sie SQL Server Management Studio, und stellen Sie eine Verbindung mit dem Server her, der als Verteiler fungiert.
Erweitern Sie unter Objekt-ExplorerSQL Server-Agent und dann Aufträge.
Wählen Sie den Momentaufnahme-Agent-Auftrag für die betroffene Veröffentlichung aus, klicken Sie mit der rechten Maustaste darauf, und wählen Sie dann Eigenschaften>Schritte>Schritt 2>Bearbeiten aus.
Fügen Sie im Fenster Auftragsschritteigenschaften am Ende des Befehls hinzu
-NativeBcpFileFormatVersion 100
, und wählen Sie OK aus, um die Änderungen zu speichern.Wenden Sie den neuesten Microsoft OLE DB-Treiber an:
Wenn der Verteilungs-Agent (oder Merge-Agent) für Pushabonnements ausgeführt wird, wenden Sie ihn auf dem Verteilerserver an.
Wenn der Verteilungs-Agent (oder Merge-Agent) für Pullabonnements ausgeführt wird, wenden Sie ihn auf dem Abonnentenserver an.
Benennen Sie die msoledbsql.dll-Datei im Ordner C:\Programme\Microsoft SQL Server\150\COM um:
Wenn es sich um ein Pushabonnement handelt, benennen Sie die Datei im Ordner auf dem Verteilerserver um.
Wenn es sich um ein Pullabonnement handelt, benennen Sie die Datei im Ordner auf dem Abonnentenserver um.
Kopieren Sie die msoledbsql.dll Datei aus dem Ordner C:\Windows\System32\, und fügen Sie sie in den Ordner C:\Programme\Microsoft SQL Server\150\COM ein.
Führen Sie die folgenden Schritte aus, um dieses Problem bei der Mergereplikation zu umgehen:
Wenden Sie SQL Server kumulatives Update 15 (CU15) 2019 oder eine höhere Version auf dem Verteilerserver an.
Führen Sie alle Schritte aus, die auf das Transaktionsreplikationsproblem angewendet werden.