[MSSQL][ERROR] Collation 충돌 ( Korean_Wansung_CI_AS,SQL_Latin1_General_…
-
- 첨부파일 : artsquare.jpg (37.2K) - 다운로드
-
- 관련링크 : https://rocabilly.tistory.com/531376회 연결
-
0회 연결
본문
Collation : SQL Server의 기본 데이터 정렬을 설정하는 옵션
Collation 종류 보기 : SELECT * FROM ::fn_helpcollations()
1. Collation 확인
< DB Collation >
SELECT SERVERPROPERTY('collation')
< DB Collation 리스트 >
SELECT name, collation_name FROM sys.databases;
< Column Collation 리스트 >
SELECT name, collation_name FROM sys.columns
2. 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 재생성 으로 처리
3. Collation 이 맞지 않는 경우 오류
- 두 테이블간 Collation 이 맞지 않을 때 발생 ( 예: DB1 과 TempDB 안의 테이블간의 조인시 Collation 이 틀려 발생한 에러 )
System.Data.SqlClient.SqlException: equal to 작업에서의 "Korean_Wansung_CI_AS"과(와) "SQL_Latin1_General_CP1_CI_AS" 간의 데이터 정렬 충돌을 해결할 수 없습니다.
출처: https://rocabilly.tistory.com/53 [프로그램이 좋다]
댓글목록 0