Collation 변경하는법

Posted at 2008. 11. 24. 20:14 | Posted in 데이타베이스/MSSQL


데이터베이스의 Collation 정보를 말합니다.

 

MSSQL DBMS 는 WINDOWS OS 와 상호작용을 하여 처리하는 경우가 많이 있습니다.

 

Collaction 정보역시 마찬가지 인데요 이것은, SQL Server의 기본 데이터 정렬을 설정하는 옵션 입니다. MSSQL 을 설치할 때 대부분 Korean_Wansung_CI_AS 으로 설정을 하게 됩니다. 이것의 의미는 "한국어_완성형 문자" 라는 의미 입니다.

 

테이블에 데이타를 입력할경우, 특정칼럼 기준으로 정렬할경우 완성형으로 비교 판단 하게 되겠지요.

 

SELECT * FROM ::fn_helpcollations()
GO

 

쿼리분석기에서 위의 명령을 내리면, MSSQL에서 지원하는 Collaction 정보들이 나오게 됩니다.

 

Collaction 정보를 변경하고자 한다면,

 

ALTER DATABASE CollateDb
COLLATE Korean_Wansung_CI_AI
GO

이렇게 하시면 됩니다.


확인은 아래처럼 하시구요...

EXEC sp_helpdb 'CollateDb'
GO

 

 

이렇게 했을때 오류가 발생할 수도 있습니다.

"칼럼 'xxx'는 데이터베이스 데이타 정렬에 종속되어 있습니다."

 

위의 오류가 나타나면, 데이터베이스에 있는 개체들이 데이터베이스의 정렬에 종속되어 있는 경우에 발생되는 오류입니다. 따라서 해당 개체들을 다른 Collation으로 변경을 한 다음에 데이터베이스 Collation으로 변경을 하셔야 합니다.

 

아래는 Collaction 의 변경에 대한 구문입니다.

 

Korean_Wansung_CI_AI  으로의 변경

ALTER TABLE 테이블명
ALTER COLUMN 칼럼명 VARCHAR(50) COLLATE Korean_Wansung_CI_AI
GO

 

 

ALTER TABLE 테이블명
ALTER COLUMN 칼럼명 VARCHAR(50) COLLATE SQL_Latin1_General_CP1_CI_AS 
GO

 

sp_help 테이블명 을 통해서 결과를 확인해 보시면 되겠습니다.

 

 

 

만약  아래와 같은 메시지가 나왔다면,

-------------------------

서버: 메시지 5074, 수준 16, 상태 8, 줄 1
개체 'pk_테이블명은'은(는) 열 '칼럼명'에 종속되어 있습니다.
서버: 메시지 4922, 수준 16, 상태 1, 줄 1
하나 이상의 개체가 이 열을 액세스하기 때문에 ALTER TABLE ALTER COLUMN '칼럼명'이(가) 실패했습니다.

-------------------------

 

 

온라인 설명서에서 "데이터 정렬 변경"이라는 제목의 문서를 보시기 바랍니다.

애러의 원인은 다음과 같습니다.

------------------------

현재 다음 항목에서 참조하는 열의 데이터 정렬은 바꿀 수 없습니다.

  • 계산된 열
  • 인덱스
  • 자동으로 또는 CREATE STATISTICS 문에 의해 생성된 배포 통계
  • CHECK 제약 조건
  • FOREIGN KEY 제약 조건

------------------------

 

 

 

위의 문제역시 메뉴얼을 보시면 해결 절차가 나와있느니 매뉴얼을 참고하세요

 

간단한 철차를 말씀드리면,

 기본키 제거 -> Collation 변경 -> 기본키 재생성 의 순서에 따라서 Collation의 정보를 변경 하시면 됩니다



지식인에서..cuteshim 님의 답변입니다.



//