콘텐츠로 이동
≡

MS SQL

MS-SQL#

MS-SQL 연결정보를 등록할 때, "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.

원인#

Migration Center에서 MS-SQL 연결정보를 등록할 때, 다음 조건을 만족해야 한다.

  1. Login 이름과 Database User 이름이 동일해야 한다.

MS-SQL에서는 Login과 Database User를 서로 다른 이름으로 생성할 수 있다. 그러나 Migration Center에서는 연결 정보에 지정한 Login과 해당 데이터베이스의 User 이름이 동일한 경우만 지원한다.

  1. Database User는 Default Schema를 지정해야 하며, 해당 Default Schema의 소유자여야 한다. 또한 Default Schema 외의 다른 Schema를 소유하지 않아야 한다.

Migration Center에서는 MS-SQL User의 Default Schema를 Migration 대상으로 사용한다. 따라서 연결 정보에 지정한 Database User가 Default Schema의 소유자여야 한다. 또한 Database User는 Default Schema 외의 다른 Schema를 소유하지 않아야 한다.

해결 방법#

연결 정보에 지정한 Login과 Database User의 이름이 동일한지 확인한다.

또한 Database User가 Default Schema만 소유하도록 수정한다.

연결정보 등록 중 "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 에서 해당 칼럼 크기를 직접 수정한다.