MS-SQL DB 언어셋 문제 및 조치 방법(collation 충돌 Error) Korean_Wansung_CI_AS(Korean)&SQL_Latin1_General_CP1_CI_AS(English)
RDMS(MS-SQL) 외국 설치 시 언어셋 문제에 직면한다.
지금까지 몇 가지 진행해보았으나, 최종적으로 아래 방법이 제일 좋았다.
1. Error 이슈 사항
- English MS-SQL 로 설치 후 테이블 및 칼럼을 korea 로 설치한 경우, 테이블/프로시져 조회 시 아래와 같은
에러 가 발생한다.
* SQL_Latin1_General_CP1_CI_AS(English) 와 Korean_Wansung_CI_AS(Korean) 충돌 Error 발생
2. 조치 방법
2-1) DB Collation 변경 후 테이블/칼럼/프로시져 재생성
- DB Collation 맞춰 재새성 시 에러가 해소된다.
[ 세부 확인 및 변경 방법 ]
> 데이터 베이스 별 COLLATE 확인
SELECT name, collation_name
FROM sys.databases
WHERE name = 'PICT_DB';
> 테이블별 COLLATE 확인
SELECT TABLE_NAME, COLUMN_NAME, COLLATION_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'xv_device_class';
> 데이터베이스 COLLATE 변경
ALTER DATABASE [데이터베이스명] COLLATE Korean_Wansung_CI_AS;
Tip) 이 방법은 데이터베이스 수준의 COLLATION만 변경되며, 기존 테이블이나 컬럼의 COLLATION은 변경되지 않습니다.
2-2) 특정 테이블/프로시져 및 칼럼 Collation 적용
- 특정 칼럼에 Alter 문 실행 후 문자 해당 하는 경우, 칼럼 뒤에 아래와 같이 수정 하면 에러가 해소된다.
[ 컬럼의 COLLATION 변경 방법]
ALTER COLUMN [컬럼명] NVARCHAR(100) COLLATE Korean_Wansung_CI_AS; <<-- 해당 부분 추가 적용
- 깨지는 테이블 칼럼에 변경 적용.
• [컬럼명]: 변경할 컬럼 이름입니다.
• NVARCHAR(100): 데이터 타입을 **유니코드(NVarchar)**로 설정하는 것이 한글 깨짐을 방지하는 데 좋습니다.
이에 DB 문제 시 여러 영향도가 높으니, 꼭 참고하여 구축 시 잘 활용하시면 좋습니다.
조금이나마 업무에 도움이 되셨으면 좋겠습니다.
Have a good day!