Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: SQL Server 2019
Questo articolo fornisce soluzioni alternative per il problema che la funzione ASCII restituisce risultati diversi nelle tabelle Publisher e Subscriber del database.
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 del database Publisher:SELECT id, col1, ASCII(col1) FROM PublisherTable
Convertire la colonna (
col1) nella tabella di 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 esso e quindi scegliere Proprietà>PassaggiPassaggio 2Modifica.
Nella finestra Proprietà fase processo, aggiungere
-NativeBcpFileFormatVersion 100alla fine del comando e selezionare OK per salvare le modifiche.Applica il driver Microsoft OLE DB più recente:
Se l'agente di distribuzione (o l'agente di merge) viene eseguito per le sottoscrizioni push, applicarlo sul server Distributor.
Se l'agente di distribuzione (o l'agente di merge) viene eseguito per le sottoscrizioni pull, occorre applicarlo nel server Sottoscrittore.
Rinominare il file msoledbsql.dll nella cartella C:\Program Files\Microsoft SQL Server\150\COM:
Se si tratta di una sottoscrizione push, rinominare il file nella cartella nel server Distributore.
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:\Program Files\Microsoft SQL Server\150\COM.
Per risolvere questo problema per la replica di tipo merge, seguire questa procedura:
Applicare Aggiornamento cumulativo 15 (CU15) per SQL Server 2019 o una versione successiva sul server Distributor.
Seguire tutti i passaggi per il problema di replica transazionale.