본문 바로가기

프로그래밍/MSSQL

오류해결 - equal to 작업에서의 "Korean_Wansung_CI_AS"과(와) "Japanese_Unicode_CI_AS" 간의 데이터 정렬 충돌을 해결할 수 없습니다.

Query는 아래와 같이 실행하였더니,

SELECT * FROM OPENQUERY([linkDB_Server], 'SELECT CASE WHEN [DB].[dbo].funGetCategoryCode(strCategoryCodePath) = ''ST'' THEN NULL END FROM [DB].[dbo].[Item] WITH(NOLOCK) WHERE itemCode = ''180516-1482101-1'' ')


이런 에러가 뜬다. 

연결된 서버 "linkDB_Server_TO_JP"의 OLE DB 공급자 "SQLNCLI11"이(가) 메시지 "지연된 준비를 완료할 수 없습니다."을(를) 반환했습니다.
메시지 8180, 수준 16, 상태 1, 줄 133
문을 준비할 수 없습니다.
메시지 468, 수준 16, 상태 9, 줄 133
equal to 작업에서의 "Korean_Wansung_CI_AS"과(와) "Japanese_Unicode_CI_AS" 간의 데이터 정렬 충돌을 해결할 수 없습니다.


해결 방법으로 

SELECT * FROM OPENQUERY([linkDB_Server_TO_JP], 
    'SELECT CASE WHEN [adprintNewDB].[dbo].funGetCategoryCode(strCategoryCodePath) collate Japanese_Unicode_CI_AS = ''ST'' THEN  'GOOD'' END
FROM [adprintNewDB].[dbo].tblOrderItem WITH(NOLOCK)
WHERE strOrderItemCode = ''180516-1482101-1''
')

왜그런가하니, 

DB및 테이블 생성 시 설정한 언어의 차이라고 http://guyaga.tistory.com/287 여기 글을 보았다.

자세한 내용은 다음으로 퇴근해야한다.

sp_help [table명]을 검색해보니

Collation이 Japanese_Unicode_CI_AS 되어있다.