Collation

blimeyoops·2023년 11월 6일
0

mssql

목록 보기
3/3
post-thumbnail

collation은 데이터 정렬을 지정하는 방식이다. 즉, SQL Server가 데이터 순서에 맞춰 저장 될때 collation 순서를 따른다.
다음 쿼리를 통해 우리가 사용하고 있는 collation 설정값을 확인할 수 있다.

SELECT name, collation_name FROM sys.databases

또한 SSMS에서 데이터베이스 속성에서 데이터 정렬값을 확인할 수도 있다.

이 collation에 따라 테이블에 한글 데이터가 깨질수도 있고 한글 데이터가 검색이 안될 수도 있다.

collation 리스트 및 options

sys.fn_helpcollations를 통해 지원하는 collation 리스트를 볼 수 있다.

SELECT * FROM sys.fn_helpcollations()

열거된 collation의 이름을 잘 보면 언어_[C or A or K or W][S or I] 형태로 구성되어 있다.

앞문자뒤문자설명
CS소문자가 대문자보다 먼저 정렬
CI대소문자를 구분하지 않고 정렬
AS악센트를 구분하여 정렬
AI악센트를 구분하지 않고 정렬
KS히라가나와 가타카나를 구분하여 정렬
KI히라가나와 가타카나를 구분하지 않고 정렬
WS전각과 반각 문자를 구분하여 정렬
WI전각과 반각 문자를 구분하지 않고 정렬

Database level 변경

데이터 정렬값은 데이터베이스 생성시 시스템 설정을 따라가며, 각 데이터베이스에서 데이터 정렬값을 설정할 수 있따. 이런 데이터 정렬값은 SSMS 또는 쿼리를 통해 변경할 수 있고 생성하면서도 데이터 정렬값을 설정할 수도 있다.

CREATE DATABASE [데이터베이스 이름] COLLATE [데이터 정렬값]

ALTER DATABASE [데이터베이스 이름] COLLATE [데이터 정렬값]

Column level

기본적으로 컬럼의 데이터 정렬값은 데이터베이스를 따라가지만 각 컬럼에 원하는 데이터 정렬값 설정이 가능하다.

CREATE TABLE [테이블 이름] ([컬럼 이름] [문자열 데이터 타입] COLLATE [데이터 정렬값])

Changing SQL Server System Collation

시스템 설정의 데이터 정렬 변경은 다음과 같다.

  1. 관리자 권한으로 CMD를 시작한다.

  2. Windows\System32로 이동해 다음 명령을 통해 SQL Server 이름을 찾는다.

sc queryex type= service state= all | find /i "SQL Server"

  1. SQL Server 서비스를 중지한다.

  2. SQL Server의 Binn 폴더(sqlserver.exe 파일이 있는 폴더)로 이동해 다음 명령어를 실행한다.

sqlservr -m -T4022 -T3659 -s"NAME OF YOUR INSTANCE" -q"NEW COLLATION NAME"
sqlservr -m -T4022 -T3659 -s"MSSQLSERVER" -q"SQL_Latin1_General_CP1_CI_AI"
  1. 변경이 완료되면 서비스를 실행한다.

0개의 댓글