Funkcja ASCII zwraca różne wyniki w tabelach bazy danych wydawcy i subskrybenta
Dotyczy: SQL Server 2019
Ten artykuł zawiera obejścia problemu, który ASCII
funkcja zwraca różne wyniki w tabelach bazy danych Wydawca i Subskrybent.
Symptomy
Rozważmy następujący scenariusz:
Replikacja transakcyjna lub scalona jest używana w programie SQL Server 2019.
Początkowy schemat i dane są stosowane za pośrednictwem agenta migawki replikacji.
W bazie danych programu Publisher kolumna zdefiniowana jako typ danych znaków zawiera wartość NULL — znak ASCII 0
char(0)
.
W tym scenariuszu ASCII
, gdy używasz funkcji do konwertowania kolumny w tabelach bazy danych Wydawca i Subskrybent, zwracane są różne wyniki. Możesz odwołać się do następującego przykładu:
Przekonwertuj kolumnę (
col1
) w tabeli bazy danych programu Publisher:SELECT id, col1, ASCII(col1) FROM PublisherTable
Przekonwertuj kolumnę (
col1
) w tabeli bazy danych subskrybentów:SELECT id, col1, ASCII(col1) FROM SubscriberTable
Rozwiązanie
Aby obejść ten problem w przypadku replikacji transakcyjnej, wykonaj następujące kroki:
Otwórz program SQL Server Management Studio i połącz się z serwerem działającym jako dystrybutor.
W obszarze Eksplorator obiektów rozwiń węzeł SQL Server Agent, a następnie rozwiń węzeł Zadania.
Wybierz zadanie agenta migawki dla publikacji, którego dotyczy problem, kliknij go prawym przyciskiem myszy, a następnie wybierz pozycję Kroki właściwości>Krok>2>Edycja.
W oknie Właściwości kroku zadania dodaj
-NativeBcpFileFormatVersion 100
na końcu polecenia i wybierz przycisk OK, aby zapisać zmiany.Zastosuj najnowszy sterownik OLE DB firmy Microsoft:
Jeśli agent dystrybucji (lub agent scalania) jest uruchamiany dla subskrypcji wypychanych, zastosuj go na serwerze dystrybutora.
Jeśli agent dystrybucji (lub agent scalania) jest uruchamiany dla subskrypcji ściągnięcia, zastosuj go na serwerze subskrybenta.
Zmień nazwę pliku msoledbsql.dll w folderze C:\Program Files\Microsoft SQL Server\150\COM:
Jeśli jest to subskrypcja wypychana, zmień nazwę pliku w folderze na serwerze dystrybutora.
Jeśli jest to subskrypcja ściągania, zmień nazwę pliku w folderze na serwerze subskrybenta.
Skopiuj plik msoledbsql.dll z folderu C:\Windows\System32\ i wklej go do folderu C:\Program Files\Microsoft SQL Server\150\COM.
Aby obejść ten problem związany z replikacją scalania, wykonaj następujące kroki:
Zastosuj aktualizację zbiorczą PROGRAMU SQL Server 2019 (CU15) lub nowszą wersję na serwerze dystrybutora.
Wykonaj wszystkie kroki, które są stosowane do problemu z replikacją transakcyjną.