La funzione ASCII restituisce risultati diversi nelle tabelle di database server di pubblicazione e 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
Considerare lo scenario descritto di seguito:
Si usa la replica transazionale o di tipo merge in SQL Server 2019.
Lo schema iniziale e i dati 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 Server di pubblicazione e Sottoscrittore, vengono restituiti risultati diversi. È possibile fare riferimento all'esempio seguente:
Convertire la colonna (
col1
) nella tabella del database publisher:SELECT id, col1, ASCII(col1) FROM PublisherTable
Convertire la colonna (
col1
) nella tabella del database del Sottoscrittore:SELECT id, col1, ASCII(col1) FROM SubscriberTable
Soluzione alternativa
Per risolvere questo problema per la replica transazionale, seguire questa procedura:
Aprire SQL Server Management Studio e connettersi al server che funge da server di distribuzione.
In Esplora oggetti espandere SQL Server Agent e quindi Processi.
Selezionare il processo dell'agente snapshot per la pubblicazione interessata, fare clic con il pulsante destro del mouse su di essa e quindi selezionare Proprietà>Passaggi>2>Modifica.
Nella finestra Proprietà passaggio processo aggiungere
-NativeBcpFileFormatVersion 100
alla fine del comando e selezionare OK per salvare le modifiche.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 del Sottoscrittore.
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.
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:
Applicare SQL Server 2019 Cumulative Update 15 (CU15) o una versione successiva nel server di distribuzione.
Seguire tutti i passaggi applicati al problema di replica transazionale.