반응형
COLLATION 확인
Collation 종류 보기
SELECT * FROM ::fn_helpcollations()
--DB Collation
SELECT SERVERPROPERTY('collation')
--DB Collation List
SELECT name, collation_name FROM sys.databases;
--Column Collation List
SELECT name, collation_name FROM sys.columns
COLLATION 변경
--DB Collation 변경
ALTER DATABASE CollateDb
COLLATE Korean_Wansung_CI_AI
GO
--Table Column Collation 이 다를 경우
--"칼럼 'xxx'는 데이터베이스 데이타 정렬에 종속되어 있습니다." 라는 메시지 발생 가능
--Table Column Collation 변경
ALTER TABLE 테이블명
ALTER COLUMN 칼럼명 VARCHAR(50) COLLATE Korean_Wansung_CI_AI
GO
인덱스, CHECK 제약조건, Foreign Key 제약조건, 계산된열 등의 Column은 변경 불가
따라서 PK 제거 -> Collation 변경 -> PK 재생성 으로 처리
COLLATION이 다를 경우 오류
- 두 테이블간 Collation 이 맞지 않을 때 발생 ( 예: DB1 과 TempDB 안의 테이블간의 조인시 Collation 이 틀려 발생한 에러 )
equal to 작업에서의 "Korean_Wansung_CI_AS"과(와) "SQL_Latin1_General_CP1_CI_AS" 간의 데이터 정렬 충돌을 해결할 수 없습니다.
조회 시 수동으로 COLLATION 지정
CASE 1) 단순 조회 시 조건문에서 수동으로 지정
SELECT 1
FROM TABLE A
JOIN TABLE B
ON A.COL = B.COL COLLATE KOREAN_WANSUNG_CS_AS_WS
CASE 2) 함수 또는 프로시저 등의 오브젝트에서 값을 여러번 조회해야 하는 경우 TEMP TABLE을 통해 컬럼에 직접 지정
Create Table #TMP_TBL_EXCEL_ERR
(
EXCEL_ROW INT
, COL_1 VARCHAR(100) COLLATE Korean_Wansung_CI_AS
, COL_2 VARCHAR(100) COLLATE Korean_Wansung_CI_AS
, COL_3 VARCHAR(100) COLLATE Korean_Wansung_CI_AS
, COL_4 VARCHAR(100) COLLATE Korean_Wansung_CI_AS
, PRIMARY KEY (EXCEL_ROW)
)
반응형
'[DB] SQL SERVER' 카테고리의 다른 글
[MSSQL] Database Restore Option (1) | 2024.12.18 |
---|---|
[MSSQL] 데이터베이스 복원 시 Login <-> User 매핑 에러 해결 (1) | 2024.12.11 |
[MSSQL] sp_MSforeachdb, sp_MSforeachtable (0) | 2024.11.18 |
[MSSQL] Fill Factor (채우기 비율)에 관한 오해와 진실 (1) | 2024.11.15 |
[MSSQL] 누락된 인덱스 정보 (추천 인덱스)_Missing Index Query (0) | 2024.11.14 |