Condividi tramite


La funzione ASCII restituisce risultati diversi nelle tabelle di database del server di pubblicazione e del Sottoscrittore

Si applica a: SQL Server 2019

Questo articolo fornisce soluzioni alternative per il problema che la ASCII funzione restituisce risultati diversi nelle tabelle di database del server di pubblicazione e del Sottoscrittore.

Sintomi

Prendi in considerazione lo scenario seguente:

  • La replica transazionale o di tipo merge viene usata in SQL Server 2019.

  • Lo schema e i dati iniziali vengono applicati tramite il agente di snapshot di replica.

  • Nel database del server di pubblicazione una colonna definita come tipo di dati carattere include un valore NULL - carattere ASCII 0 char(0).

In questo scenario, quando si usa la ASCII funzione per convertire la colonna nelle tabelle di database del server di pubblicazione e del Sottoscrittore, vengono restituiti risultati diversi. È possibile fare riferimento all'esempio seguente:

  • Convertire la colonna (col1) nella tabella di database del server di pubblicazione:

    SELECT id, col1, ASCII(col1) FROM PublisherTable
    

    Screenshot dei risultati per la tabella del server di pubblicazione.

  • Convertire la colonna (col1) nella tabella di database del Sottoscrittore:

    SELECT id, col1, ASCII(col1) FROM SubscriberTable
    

    Screenshot dei risultati per le tabelle sottoscrittori.

Soluzione alternativa

  • Per risolvere questo problema per la replica transazionale, seguire questa procedura:

    1. Aprire SQL Server Management Studio e connettersi al server che funge da server di distribuzione.

    2. In Esplora oggetti espandere SQL Server Agent e quindi processi.

    3. Selezionare il processo dell'agente snapshot per la pubblicazione interessata, fare clic con il pulsante destro del mouse su di esso e quindi scegliere Proprietà>Passaggio>2>Modifica.

    4. Nella finestra Proprietà passaggio processo aggiungere -NativeBcpFileFormatVersion 100 alla fine del comando e selezionare OK per salvare le modifiche.

    5. Applicare la versione più recente del driver Microsoft OLE DB:

      • Se l'agente di distribuzione (o l'agente di merge) viene eseguito per le sottoscrizioni push, applicarlo nel server di distribuzione.

      • Se l'agente di distribuzione (o l'agente di merge) viene eseguito per le sottoscrizioni pull, applicarlo nel server Sottoscrittore.

    6. Rinominare il file msoledbsql.dll nella cartella C:\Programmi\Microsoft SQL Server\150\COM :

      • Se si tratta di una sottoscrizione push, rinominare il file nella cartella nel server di distribuzione.

      • Se si tratta di una sottoscrizione pull, rinominare il file nella cartella nel server Sottoscrittore.

    7. Copiare il file msoledbsql.dll dalla cartella C:\Windows\System32\ e incollarlo nella cartella C:\Programmi\Microsoft SQL Server\150\COM .

  • Per risolvere questo problema per la replica di tipo merge, seguire questa procedura:

    1. Applicare l'aggiornamento cumulativo di SQL Server 2019 15 (CU15) o una versione successiva nel server di distribuzione.

    2. Seguire tutti i passaggi applicati al problema di replica transazionale.