ASCII-Funktion gibt unterschiedliche Ergebnisse in Publisher- und Abonnentendatenbanktabellen zurück.
Gilt für: SQL Server 2019
Dieser Artikel enthält Problemumgehungen für das Problem, das von der ASCII
Funktion in den Tabellen der Publisher- und Abonnentendatenbank unterschiedliche Ergebnisse zurückgibt.
Problembeschreibung
Stellen Sie sich folgendes Szenario vor:
Sie verwenden die Transaktions- oder Zusammenführungsreplikation in SQL Server 2019.
Das anfängliche Schema und die Daten werden über das Replikations-Momentaufnahmen-Agent angewendet.
In der Publisher-Datenbank 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 Tabellen der Publisher- und Abonnentendatenbank zu konvertieren, werden unterschiedliche Ergebnisse zurückgegeben. Sie können sich auf das folgende Beispiel beziehen:
Konvertieren Sie die Spalte (
col1
) in der Publisher-Datenbanktabelle:SELECT id, col1, ASCII(col1) FROM PublisherTable
Konvertieren Sie die Spalte (
col1
) in der Tabelle der Abonnentendatenbank: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 Distributor fungiert.
Erweitern Sie unter Objekt-Explorer SQL Server-Agent, und erweitern Sie dann Aufträge.
Wählen Sie den Snapshot-Agent-Auftrag für die betroffene Publikation aus, klicken Sie mit der rechten Maustaste darauf, und wählen Sie dann "Eigenschaftenschritt>>Schritt 2>Bearbeiten" aus.
Fügen Sie
-NativeBcpFileFormatVersion 100
im Fenster "Auftragsschritteigenschaften" am Ende des Befehls hinzu, und wählen Sie "OK" aus, um die Änderungen zu speichern.Wenden Sie den neuesten Microsoft OLE DB-Treiber an:
Wenn der Verteiler-Agent (oder Seriendruck-Agent) für Pushabonnements ausgeführt wird, wenden Sie ihn auf den Verteilerserver an.
Wenn der Verteilungs-Agent (oder Seriendruck-Agent) für Pullabonnements ausgeführt wird, wenden Sie ihn auf den Abonnentenserver an.
Benennen Sie die datei msoledbsql.dll 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 Distributor-Server 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 Seriendruckreplikation zu umgehen:
Wenden Sie SQL Server 2019 kumulatives Update 15 (CU15) oder eine höhere Version auf dem Distributor-Server an.
Führen Sie alle Schritte aus, die auf das Transaktionsreplikationsproblem angewendet werden.