2012-06-04 6 views
3

데이터베이스에서 데이터 정렬 문제를 피하기 위해 데이터 정렬 힌트를 지정해야하는 아래 쿼리를 사용하고 있습니다.이 쿼리는 2 개의 데이터베이스에서 테이블을 사용하기 때문에.Sql Server - 데이터 정렬 사용

메시지 468, 수준 16, 상태 9, 줄 12 "Latin1_General_CS_AI"및 운영 동일한 에서 "Latin1_General_CS_AS"사이의 정렬 충돌을 해결할 수 없습니다. 나는 다음과 같이 정렬 힌트를 포함하는 쿼리를 변경

Delete from table1 where oldcolumn in 
(
select newcolumn from Database2.dbo.table2 
where invoiceid = @invno 
and complete = 0 
) 

:

내가 다른 데이터 정렬로 다른 데이터베이스를 사용하는 일부 쿼리를 실행할 때

은 현재 내가 데이터 정렬 충돌 오류가 위의 무엇입니까
Delete from table1 where oldcolumn COLLATE SQL_Latin1_General_CP1_CS_AS in 
(
select newcolumn from Database2.dbo.table2 
where invoiceid = @invno 
and complete = 0 
) 
  1. 위 쿼리는 데이터 정렬 문제를 해결할 수 있습니까?
  2. 연산자의 왼쪽 또는 오른쪽에 조합 힌트를 지정하는 것과 동일합니까 (예 : "="연산자)?
  3. invoiceid = @invno과 같은 쿼리가 런타임 데이터 정렬 충돌 오류를 생성 할 수 있습니까?

참고 : 나는 위의 두 데이터베이스 및 스크립트의 실제 데이터베이스에서 실행됩니다에 대한 액세스 권한이없는 같이 내가이 질문을하고있다. 쿼리 아래

+0

가 설명하는 "는 정렬의 문제는"당신은 지금 겪고 있습니다. 오류 메시지, 잘못된 결과 또는 무엇을 얻고 있습니까? – Quassnoi

+0

데이터 정렬 충돌에 대한 런타임 오류가 발생합니다. 나는 질문을 업데이트했다. –

+0

오류 메시지를 게시하는 것을 잊었습니다. – Quassnoi

답변

0

사용 : 당신은 잊지

DELETE FROM Table1 
WHERE Table1.ID IN (
       SELECT Table1.ID 
       FROM Table1 
       INNER JOIN Database2.dbo.Table2 Table2 ON Table2.NewColumn = Table1.OldColumn COLLATE SQL_Latin1_General_CP1_CS_AS 
       WHERE Table2.invoiceid = @invno 
        AND Table2.complete = 0 
       )