728x90
개발자에게 테이블의 데이터를 넣으니 한글이 깨진다는 문의가 왔다..
확인해보니 DB Server 설정 시 기본 Collation(데이터 정렬) SQL_Latin1_General_CP1_CI_AS 로 되어 있었다
클라우드 환경인 AWS, Azure 등 에서 기본 Server Collation 이 SQL_Latin1_General_CP1_CI_AS 로 설정되어 있는 것 같다
1. 현상
테이블을 만들고 한글을 INSERT 하니 한글이 지원하지 않는 (깨지는) 현상이 나타남
2. 발생원인
데이터베이스 생성시 Collation(데이터 정렬)을 따로 설정하지 않아 한글 지원이 되지 않았음
-- COLLATE 확인
SELECT *
FROM SYS.DATABASES
해당 쿼리 실행을 하면 아래와 같은 결과가 나온다
쿼리 결과를 보면 알 수 있듯이 시스템 DB는 SQL_Latin1_General_CP1_CI_AS 로 되어있고 사용자 DB (A,B)의 COLLATION이 다른 걸 확인할 수 있다.
3. 해결 방안
3-1. 사용자 B DB(database id = 7) Collation을 변경
--단일 모드로 변경
ALTER DATABASE [B DB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
--COLLATE 변경
ALTER DATABASE [B DB] COLLATE Korean_Wansung_CI_AS;
--멀티모드로 변경
ALTER DATABASE [B DB] SET MULTI_USER;
Korean_Wansung_CI_AS
- Korean : 한국어
- Wansung : 정렬규칙(완성형)
- 대소문자 구분 : CS(구분), CI(구분 안 함)
- 악센트 구분 : AS(구분), AI(구분 안 함)
3-2. 변경되었는지 확인하기 위해 COLLATE 재 확인
3-3. 데이터 입력을 통한 한글 지원 확인
** 참고
사용 가능한 Collation 확인
SELECT name
, description
FROM fn_helpcollations()
728x90
'DBMS > MSSQL' 카테고리의 다른 글
[MSSQL] 프로시저 이력 관리 DB 생성 및 트리거(Trigger) 셋팅 (1) | 2022.09.26 |
---|---|
[MSSQL] 대량 데이터 내보내기(Export ) (0) | 2022.09.16 |
[MSSQL] .NET Framework에서 사용자 코드를 실행할 수 없습니다. "clr enabled" 구성 옵션을 설정하십시오 (0) | 2022.09.15 |
[MSSQL] 쿼리 대문자 소문자 변경 단축키 (0) | 2022.09.13 |
[MSSQL] 저장 프로시저 일괄 조회 권한 주는 쿼리 (0) | 2022.09.11 |