Delen via


De functie ASCII retourneert verschillende resultaten in de databasetabellen Publisher en Subscriber

Van toepassing op: SQL Server 2019

Dit artikel bevat tijdelijke oplossingen voor het probleem dat de ASCII functie verschillende resultaten retourneert in de databasetabellen Publisher en Subscriber.

Symptomen

Bekijk het volgende scenario:

  • U gebruikt transactionele replicatie of samenvoeging in SQL Server 2019.

  • Het eerste schema en de gegevens worden toegepast via de replicatiemomentopnameagent.

  • In de Publisher-database bevat een kolom die is gedefinieerd als gegevenstype teken een NULL-waarde - ASCII-teken 0 char(0).

In dit scenario worden verschillende resultaten geretourneerd wanneer u de ASCII functie gebruikt om de kolom in de databasetabellen Publisher en Subscriber te converteren. U kunt het volgende voorbeeld raadplegen:

  • Converteer de kolom (col1) in de Publisher-databasetabel:

    SELECT id, col1, ASCII(col1) FROM PublisherTable
    

    Schermopname van de resultaten voor de uitgeverstabel.

  • Converteer de kolom (col1) in de databasetabel Abonnee:

    SELECT id, col1, ASCII(col1) FROM SubscriberTable
    

    Schermopname van de resultaten voor de abonneetabellen.

Tijdelijke oplossing

  • Volg deze stappen om dit probleem voor transactionele replicatie te omzeilen:

    1. Open SQL Server Management Studio en maak verbinding met de server die fungeert als distributeur.

    2. Vouw onder Objectverkenner SQL Server Agent uit en vouw vervolgens Taken uit.

    3. Selecteer de agenttaak voor de momentopname voor de betreffende publicatie, klik er met de rechtermuisknop op en selecteer vervolgens Eigenschappenstappen>>stap 2>bewerken.

    4. Voeg in het venster Eigenschappen van taakstap toe aan het einde van de opdracht en selecteer OK om de wijzigingen op te -NativeBcpFileFormatVersion 100 slaan.

    5. Pas het meest recente Microsoft OLE DB-stuurprogramma toe:

      • Als de distributieagent (of samenvoegagent) wordt uitgevoerd voor pushabonnementen, past u deze toe op de distributeurserver.

      • Als de distributieagent (of samenvoegagent) wordt uitgevoerd voor pull-abonnementen, past u deze toe op de abonneeserver.

    6. Wijzig de naam van het bestand msoledbsql.dll in de map C:\Program Files\Microsoft SQL Server\150\COM:

      • Als het een push-abonnement is, wijzigt u de naam van het bestand in de map op de Distributor-server.

      • Als het een pull-abonnement is, wijzigt u de naam van het bestand in de map op de abonneeserver.

    7. Kopieer het msoledbsql.dll bestand uit de map C:\Windows\System32\ en plak het in de map C:\Program Files\Microsoft SQL Server\150\COM .

  • Volg deze stappen om dit probleem voor samenvoegingsreplicatie te omzeilen:

    1. Pas SQL Server 2019 Cumulatieve update 15 (CU15) of een latere versie toe op de Distributor-server.

    2. Volg alle stappen die worden toegepast op het probleem met transactionele replicatie.