본문 바로가기
IT/MS SQL

Collation 충돌 에러 해결하기

by heavenLake 2020. 6. 10.
반응형

System.Data.SqlClient.SqlException: equal to 작업에서의 "Korean_Wansung_CI_AS"과(와) "SQL_Latin1_General_CP1_CI_AS" 간의 데이터 정렬 충돌을 해결할 수 없습니다.

 

간혹 위와 같은 에러를 만날수 있다.

보통 다른 DB간에 join인등을  할 때 나 SubQeury로 사용 할 때 발생하곤한다.

 

원인은 Collation이 서로 다르기 때문에 나타나는 증상이다.

각DB에 Collation확인은 DB속성에 일반 -> 데이터 정렬을 보면 해당 DB에 Collation을 알수있다. 

 

 

해결 방법은 

 

상황1) 단순 조회시

  아래와 같이 조건문 옆에 COLLATE를 수동으로 지정해줘서 COLLATE를 맞춰주면 된다.

 

SELECT 1
 FROM TABLE A
   JOIN TABLE B
     ON A.COL = B.COL COLLATE KOREAN_WANSUNG_CS_AS_WS

 

상황2) 프로시저등에서 값을 여러번 재사용해야 하거나 조작이 필요할시

  또는 템프 테이블에 필요한 데이터를 넣어서 사용해야 할 경우

  아래와 같이 컬럼에 직접 지정 할 수 있다.


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) 
)

 

 

반응형

댓글