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)
)
'IT > MS SQL' 카테고리의 다른 글
MS SQL CRUD 자동 생성 프로시저 쿼리 (0) | 2022.07.21 |
---|---|
mssql ssms 단축키 지정하기 (0) | 2020.06.10 |
mssql Lock 확인 및 대처 (0) | 2020.06.05 |
mssql 프로시저 내용 검색 해보기 (0) | 2020.06.05 |
MsSql 테이블 컬럼 정보 및 컬럼설명(description) 가져오기 (0) | 2020.06.05 |
댓글