2012-12-03 1 views
4

저장 프로 시저의 COLLATION을 데이터베이스 프로 시저의 테이블 열이 아닌 Database 기본값으로 설정하려면 어떻게해야합니까?COllation conflict ERROR, 데이터베이스 기본값으로 저장 프로 시저의 데이터 정렬을 설정하십시오.

Cannot resolve the collation conflict between “SQL_Latin1_General_Pref_CP1_CI_AS” and “Latin1_General_CI_AS” in the equal to operation 

데이터베이스 서버 데이터 정렬이 데이터베이스 데이터 정렬과 다르기 때문에 데이터 정렬 충돌 오류가 발생합니다. 절차가 거대하고 어떤 테이블 열 충돌이 발생하는지 알지 못합니다.

해당 프로 시저의 모든 열에 동일한 데이터 정렬이 있도록 저장 프로 시저에 데이터 정렬을 할당 할 수 있습니까? Plz plz plz plz help.

+0

나는 그와 같은 코멘트가 당신의 원인을 도울 것이라고 생각하지 않습니다. 나는 또한 당신이 다양한 연결 기준으로 그것을 할 수있을 것이라고 믿지 않습니다. 가장 좋은 방법은 시스템 테이블에서 쿼리를 실행하여 어떤 열에 해당 데이터 정렬이 포함되어 있는지 확인하고 해당 쿼리 결과를 사용하여 스토어드 프로 시저에서 사용 된 것처럼 보이는지 확인할 수 있는지 확인하는 것입니다. –

+0

죄송합니다. 해당 의견을 삭제했습니다. –

+0

probs이 없습니다. 문제를 좁히는 지 확인하려면 다음과 같이 해보십시오. SELECT TABLE_NAME, COLUMN_NAME COLUMN_NAME COLATION_NAME = 'SQL_Latin1_General_Pref_CP1_CI_AS' –

답변

5

먼저 데이터 정렬은 텍스트 데이터가 테이블에 저장되는 방법과 저장 프로 시저 수준이 아닌 데이터 정렬에 관한 것입니다.

텍스트 데이터가 텍스트 콜라주가 저장되지 않은 원본과 비교 될 때 데이터 정렬 문제가 발생합니다. (나는 텍스트의 데이터 유형에 관한 이야기가 아니며, 문자열 데이터에 대해서만 말하고있다.)

어디에서 텍스트 나 비교가 이루어지는 가장 일반적인 장소 인 테이블이나 조인이 TSQL에 있는지 확인한다. 비교 영역 옆의 조합 함수를 사용하여 데이터베이스 기본값과 대조 할 수 있습니다. 예를 들면

SELECT 
c.CustomerID 
FROM 
dbo.Customer c 
INNER JOIN dbo.CustomerLog cl on c.CustomerName = cl.LogEntry collate  
database_default 

상황에 따라 가능하지 않을 수도 있지만 항상 이러한 규칙을 따릅니다.
- 당신이 특정 원인이 없다면 생성 테이블이 정렬을에서 지정할하지 않는 경우 -에서 당신이 임시 테이블을 만들 때, 이들은
임시 데이터베이스에 생성됩니다, 그래서 tempdb에이 조합에서 만든 설치 올바른 서버의 기본 데이터 정렬을 선택 ~