MS SQL
MS-SQL#
MS-SQL 연결정보를 등록할 때, "Test" 버튼을 누르면 접속에 실패하는 오류 메시지가 출력될 수 있다.#
원인#
연결정보 등록 중 Test 버튼을 눌렀을 때, 오류 메시지와 함께 접속에 실패한다.
MS-SQL 연결정보를 등록할 때, Test 버튼을 누르면 아래와 같은 오류 메시지가 출력될 수 있다.
Migration Center can support MS-SQL user who has a single schema only.
User doesn't have appropriate schema in target database.
연결정보의 사용자가 가진 스키마 관계가 Altibase와 호환 불가능한 상태이기 때문에, 등록이 허용되지 않는다.
MS-SQL은 Altibase와 사용자와 스키마 간의 관계가 다르다. Altibase는 각 사용자에게 하나의 스키마가 할당되며, 데이터베이스 객체가 해당 스키마에 종속되는 구조이다. 이에 반해 MS-SQL은 한 사용자가 복수의 스키마를 소유할 수 있으며, 각 스키마에 데이터베이스 객체가 종속된다. 이러한 차이로 인해 마이그레이션 센터는 MS-SQL 사용자가 하나의 스키마만을 소유한 경우에만 연결정보 등록을 허용한다.
따라서, MS-SQL 사용자가 스키마를 소유하지 않거나 복수의 스키마를 소유한 경우에는 연결정보를 등록할 수 없다.
해결 방법#
연결정보의 사용자가 하나의 스키마만 갖도록 수정한다.
연결정보 등록 중 "Test" 버튼을 눌렀을 때, 프로그램이 멈춘다.#
원인#
장비에 설치된 JVM과 마이그레이션 센터에 내장된 JVM 간의 충돌이 원인으로 추정된다. 실행파일 migcenter.bat로 마이그레이션 센터를 시작하면 제품에 내장된 JRE를 통해 실행되는데, 실행 장비의 운영체제가 Windows 이고 이미 JRE이 설치되어 있을 때 이러한 문제가 발생할 수 있다.
해결 방법#
실행 파일 migcenter.bat를 편집기로 열어, 환경변수 JAVA_HOME의 값을 장비에 기존에 설치된 JRE 위치로 변경해야 한다. 변경할 JRE는 반드시 8 이상이어야 한다.
오류 메시지 'Unable to insert (or update) NULL into NOT NULL column.'와 함께 데이터 이관에 실패한다.#
원인#
MS-SQL에서 NOT NULL 제약조건이 걸린 테이블 컬럼에 빈 문자열이 삽입되어 있기 때문이다.
Altibase에서는 빈 문자열은 NULL을 의미하기 때문에, NOT NULL 제약조건이 걸린 테이블의 컬럼에 빈 문자열을 삽입하는 것을 허용하지 않는다.
해결 방법#
빈 문자열 처리 옵션을 참고하여 Data Options의 빈 문자열 처리 옵션을 조정하고 다시 마이그레이션을 시도한다.
중복된 외래키의 이관이 실패한다.#
원인#
MS-SQL에서 외래키가 중복 생성되어 있는 경우, Altibase에서는 이를 허용하지 않기 때문에 중복된 외래키 중 하나만 이관된다.
해결 방법#
Run 단계 수행 후 생성된 리포트의 Missing 탭에서 이관에 실패한 외래키를 확인할 수 있다.
오류 메세지 'The server selected protocol version TLS10 is not accepted by client preferences'와 함께 서버 접속이 실패한다.#
원인#
Migration Center를 구동하는데 사용한 Java Runtime Environment (JRE) 의 기본 TLS 버전이 1.2 이상으로 변경되었는데, MS-SQL 서버에서 해당 TLS 버전을 지원하지 않아서 발생한 오류이다.
해결 방법#
java.security 파일의 jdk.tls.disabledAlgorithms 항목에서 TLSv1, TLSv1.1을 제거하면 이전 버전의 TLS를 사용 가능하다.
java.security 파일의 경로는 자바 버전에 따라 다르다:
- 자바 11 미만:
$JAVA_HOME/jre/lib/security
- 자바 11 이상:
$JAVA_HOME/conf/security
//jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA,
jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA,
TLS 1.2 이상 버전을 의무적으로 사용해야 한다면, KB3135244 - TLS 1.2 support for Microsoft SQL Server를 참조하여 Windows, MS-SQL 서버, MS-SQL JDBC 드라이버 파일을 업데이트 해야 한다.
마이그레이션 센터를 실행하는 자바 버전과 맞지 않은 JDBC 드라이버를 사용하면 Unable to connect to DB. javax/xml/bind/DatatypeConverter 에러가 발생할 수 있다.#
자바 11 이상에서 마이그레이션 센터를 실행하고 JRE 10 이하 버전의 JDBC 드라이버를 사용하면 Unable to connect to DB. javax/xml/bind/DatatypeConverter 에러가 발생한다.
원인#
JRE 10 이하 버전의 JDBC 드라이버에서 javax.xml.bind 모듈을 참조하여 발생하는 에러이다. javax.xml.bind 모듈은 자바 11 이상에서 제거되었다.
해결 방법#
마이그레이션 센터를 실행하는 자바 버전에 해당하는 JDBC 드라이버 파일을 사용한다.
예: mssql-jdbc-7.2.2.jre11.jar
"Correction Factor for Character Type Conversion" 옵션 값을 변경하여도, 자동 계산된 보정 계수가 적용된다.#
원인
MS-SQL은 칼럼별로 문자 콜레이션을 지정할 수 있다. "Correction Factor for Character Type Conversion" 옵션 값은 MS-SQL 기본 문자 집합으로 설정한 문자 집합에 대해서만 적용된다. 즉, 칼럼 단위로 문자 집합이 지정된 경우, 칼럼에 지정된 문자 집합에 따라 자동 계산된 보정 계수가 적용되며, 이런 경우에는 옵션으로 설정한 보정 계수는 적용되지 않는다.
해결 방법
자동 변환된 컬럼의 크기는 Reconcil 단계의 DDL Editing 창 - Destination DDL 에서 해당 칼럼 크기를 직접 수정한다.