ASCII 함수는 게시자 및 구독자 데이터베이스 테이블에서 다른 결과를 반환합니다.
적용 대상: SQL Server 2019
이 문서에서는 함수가 게시자 및 구독자 데이터베이스 테이블에서 다른 결과를 반환하는 ASCII
문제에 대한 해결 방법을 제공합니다.
증상
다음 시나리오를 고려하세요.
SQL Server 2019에서 트랜잭션 또는 병합 복제를 사용합니다.
초기 스키마 및 데이터는 복제 스냅샷 에이전트 통해 적용됩니다.
Publisher 데이터베이스에서 문자 데이터 형식으로 정의된 열에는 NULL 값인 ASCII 문자 0
char(0)
이 포함됩니다.
이 시나리오에서는 함수를 ASCII
사용하여 게시자 및 구독자 데이터베이스 테이블의 열을 변환하는 경우 다른 결과가 반환됩니다. 다음 샘플을 참조할 수 있습니다.
Publisher 데이터베이스 테이블의 열(
col1
)을 변환합니다.SELECT id, col1, ASCII(col1) FROM PublisherTable
구독자 데이터베이스 테이블의 열(
col1
)을 변환합니다.SELECT id, col1, ASCII(col1) FROM SubscriberTable
해결 방법
트랜잭션 복제에 대해 이 문제를 해결하려면 다음 단계를 수행합니다.
SQL Server Management Studio를 열고 배포자 역할을 하는 서버에 연결합니다.
개체 탐색기 SQL Server 에이전트 확장한 다음 작업을 확장합니다.
영향을 받는 게시에 대한 스냅샷 에이전트 작업을 선택하고 마우스 오른쪽 단추로 클릭한 다음 속성>단계 2>단계>편집을 선택합니다.
작업 단계 속성 창에서 명령의 끝에 추가하고
-NativeBcpFileFormatVersion 100
확인을 선택하여 변경 내용을 저장합니다.최신 Microsoft OLE DB 드라이버를 적용합니다.
배포 에이전트(또는 병합 에이전트)가 밀어넣기 구독에 대해 실행되는 경우 배포자 서버에 적용합니다.
배포 에이전트(또는 병합 에이전트)가 끌어오기 구독에 대해 실행되는 경우 구독자 서버에 적용합니다.
C:\Program Files\Microsoft SQL Server\150\COM 폴더에서 msoledbsql.dll 파일의 이름을 바꿉니다.
밀어넣기 구독인 경우 배포자 서버의 폴더에 있는 파일의 이름을 바꿉니다.
끌어오기 구독인 경우 구독자 서버의 폴더에 있는 파일의 이름을 바꿉니다.
C:\Windows\System32\ 폴더에서 msoledbsql.dll 파일을 복사하여 C:\Program Files\Microsoft SQL Server\150\COM 폴더에 붙여넣습니다.
병합 복제에 대한 이 문제를 해결하려면 다음 단계를 수행합니다.
배포자 서버에서 SQL Server 2019 CU15(누적 업데이트 15) 이상 버전을 적용합니다.
트랜잭션 복제 문제에 적용되는 모든 단계를 따릅니다.