FIX: 접속사로 사용 및 SQL Server Compact 3.5에서는 분리는 쿼리를 실행할 때 잘못 된 결과 포함

기술 자료 번역 기술 자료 번역
기술 자료: 2494715
모두 확대 | 모두 축소

현상

Microsoft SQL Server Compact 3.5 데이터베이스에 [NULL]에 대해 쿼리를 실행할 때 잘못 된 결과가 반환 됩니다. 접속사와 분리 된 쿼리에 포함 되어 있는 경우이 문제가 발생 합니다. 연산자는 것으로 가정 하는 경우 OR쿼리는 다음과 같은 특정 조건을 충족 해야 합니다.
  • 피연산자 중의 하나는 연산자가 포함 된 식의 OR 연산자입니다.
  • 피연산자의 해당OR연산자 같은 열을 참조 하는 식을 포함 합니다. 따라서 열의 인덱스 식에 맞게 사용할 수 있습니다.
  • 피연산자의 해당 연산자 같은 인덱스를 사용 하 여이 목록에는 이전 글머리 기호가 지정 된 열과 열에 대 한 참조를 포함 합니다. 따라서 인덱스를이 식에 사용할 수 있습니다.
예를 들어, SQL Server Compact 3.5 데이터베이스에 인덱스를 사용 합니다. 다음 표를 만들었다고 가정 합니다.
CREATE TABLE T1(
 C1 int,
 C2 int
)
GO
CREATE INDEX IND_T1 ON T1 (C1, C2)
GO
CREATE TABLE T2(
 C1 int,
 C2 int
)
GO
CREATE INDEX IND_T2 ON T2 (C1, C2)
GO
INSERT INTO T1 VALUES (1, 0)
GO
INSERT INTO T1 VALUES (2, 0)
GO
INSERT INTO T2 VALUES (1, -1)
GO
INSERT INTO T2 VALUES (2, 0)
GO
그런 다음 다음 쿼리를 실행 합니다.
SELECT T1.C1 [T1.C1], T1.C2 [T1.C2], T2.C1 [T2.C1], T2.C2 [T2.C2]
FROM T1 INNER JOIN T2 ON
T1.C1 = T2.C1
AND (T1.C2 = T2.C2 OR T2.C2 = -1)
GO
쿼리를 실행 한 후 다음과 같은 잘못 된 결과가 나타납니다.
표 축소표 확대
T1입니다.C1T1입니다.C2T2입니다.C1T2입니다.C2
2020
그러나 다음과 같은 결과가 예상한:
표 축소표 확대
T1입니다.C1T1입니다.C2T2입니다.C1T2입니다.C2
101-1
2020
참고이 문제는 사용 하는 경우에 발생의위치두 식에 논리곱 연산을 수행 하는 절. 예를 들어, 다음 쿼리를 실행 하면이 문제가 또한 발생 합니다.
SELECT T1.C1 [T1.C1], T1.C2 [T1.C2], T2.C1 [T2.C1], T2.C2 [T2.C2]
FROM T1 INNER JOIN T2 ON
T1.C1 = T2.C1
WHERE T1.C2 = T2.C2 OR T2.C2 = -1
GO

해결 방법

이 문제를 해결 하는 핫픽스는 SQL Server Compact 3.5 서비스 팩 2 용 누적 업데이트 패키지 4에 포함 됩니다.

SQL Server Compact 3.5 서비스 팩 2 용 누적 업데이트 패키지 4를 구하는 방법에 대 한 자세한 내용은 Microsoft 기술 자료의 다음 문서 번호를 클릭 합니다.
2516828 누적 업데이트 4 SQL server Compact 3.5 서비스 팩 2

해결 과정

이 문제를 해결 하려면 다음 방법 중 하나를 사용 하 여 쿼리를 다시 작성 하십시오.

방법 1

쿼리에서 테이블 힌트를 사용 하는 인덱스를 사용 하지 않으려면. 예를 들어 인덱스를 사용 하지 않으려면 다음 쿼리를 실행 합니다.
SELECT T1.C1 [T1.C1], T1.C2 [T1.C2], T2.C1 [T2.C1], T2.C2 [T2.C2]
FROM T1 INNER JOIN T2 WITH (INDEX(0)) ON
T1.C1 = T2.C1
AND (T1.C2 = T2.C2 OR T2.C2 = -1)
GO 

방법 2

"현상" 절에 나와 있는 조건을 충족 하지 않도록 쿼리를 다시 쓰기:
SELECT T1.C1 [T1.C1], T1.C2 [T1.C2], T2.C1 [T2.C1], T2.C2 [T2.C2]
FROM T1 INNER JOIN T2 ON
(T1.C1 = T2.C1 AND T2.C2 = -1) OR (T1.C1 = T2.C1 AND T1.C2 = T2.C2)

현재 상태

Microsoft는 "적용 대상" 절에 나열 된 제품에서 문제가 있음을 확인 했습니다.

속성

기술 자료: 2494715 - 마지막 검토: 2011년 4월 27일 수요일 - 수정: 2.0
키워드:?
kbfix kbqfe kbexpertiseadvanced kbsurveynew kbmt KB2494715 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.
이 문서의 영문 버전 보기:2494715

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com