ASCII-funktionen returnerar olika resultat i databastabellerna Publisher och Subscriber
Gäller för: SQL Server 2019
Den här artikeln innehåller lösningar på problemet att ASCII
funktionen returnerar olika resultat i databastabellerna Publisher och Subscriber.
Symptom
Föreställ dig följande scenario:
Du använder transaktions- eller sammanslagningsreplikering i SQL Server 2019.
Inledande schema och data tillämpas via Replikeringsögonblicksagenten.
I Publisher-databasen innehåller en kolumn som definieras som teckendatatyp ett NULL-värde – ASCII-tecken 0
char(0)
.
I det här scenariot returneras olika resultat när du använder ASCII
funktionen för att konvertera kolumnen i databastabellerna Publisher och Subscriber. Du kan se följande exempel:
Konvertera kolumnen (
col1
) i publisher-databastabellen:SELECT id, col1, ASCII(col1) FROM PublisherTable
Konvertera kolumnen (
col1
) i tabellen Prenumerantdatabas:SELECT id, col1, ASCII(col1) FROM SubscriberTable
Lösning
Följ dessa steg för att kringgå det här problemet för transaktionsreplikering:
Öppna SQL Server Management Studio och anslut till servern som fungerar som distributör.
Under Object Explorer expanderar du SQL Server Agent och expanderar sedan Jobb.
Välj jobbet för ögonblicksbildsagenten för den berörda publikationen, högerklicka på den och välj sedan Egenskaper>Steg>2>Redigera.
I fönstret Egenskaper för jobbsteg lägger du till
-NativeBcpFileFormatVersion 100
i slutet av kommandot och väljer OK för att spara ändringarna.Använd den senaste Microsoft OLE DB-drivrutinen:
Om distributionsagenten (eller sammanslagningsagenten) körs för push-prenumerationer tillämpar du den på distributörsservern.
Om distributionsagenten (eller kopplingsagenten) körs för pull-prenumerationer tillämpar du den på prenumerantservern.
Byt namn på filen msoledbsql.dll i mappen C:\Program\Microsoft SQL Server\150\COM :
Om det är en push-prenumeration byter du namn på filen i mappen på distributörsservern.
Om det är en pull-prenumeration byter du namn på filen i mappen på prenumerantservern.
Kopiera msoledbsql.dll-filen från mappen C:\Windows\System32\ och klistra in den i mappen C:\Program Files\Microsoft SQL Server\150\COM.
Följ dessa steg för att lösa det här problemet för sammanslagningsreplikering:
Använd SQL Server 2019 Kumulativ uppdatering 15 (CU15) eller en senare version på distributörsservern.
Följ alla steg som tillämpas på transaktionsreplikeringsproblemet.