Freigeben über


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
    

    Screenshot der Ergebnisse für die Herausgebertabelle.

  • Konvertieren Sie die Spalte (col1) in der Tabelle der Abonnentendatenbank:

    SELECT id, col1, ASCII(col1) FROM SubscriberTable
    

    Screenshot der Ergebnisse für die Abonnententabellen.

Problemumgehung

  • Führen Sie die folgenden Schritte aus, um dieses Problem bei der Transaktionsreplikation zu umgehen:

    1. Öffnen Sie SQL Server Management Studio, und stellen Sie eine Verbindung mit dem Server her, der als Distributor fungiert.

    2. Erweitern Sie unter Objekt-Explorer SQL Server-Agent, und erweitern Sie dann Aufträge.

    3. 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.

    4. Fügen Sie -NativeBcpFileFormatVersion 100 im Fenster "Auftragsschritteigenschaften" am Ende des Befehls hinzu, und wählen Sie "OK" aus, um die Änderungen zu speichern.

    5. 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.

    6. 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.

    7. 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:

    1. Wenden Sie SQL Server 2019 kumulatives Update 15 (CU15) oder eine höhere Version auf dem Distributor-Server an.

    2. Führen Sie alle Schritte aus, die auf das Transaktionsreplikationsproblem angewendet werden.