Você está offline; aguardando reconexão
Entrar

CORREÇÃO: O resultado incorreto quando você executa uma consulta que contém um conjunto e uma disjunção no SQL Server Compact 3. 5

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

2494715
Sintomas
Quando você executa uma consulta em um banco de dados do Microsoft SQL Server Compact 3. 5, será retornado um resultado incorreto. Esse problema ocorre quando a consulta contém um conjunto e uma disjunção. Se supusermos que os operadores são E e OR, a consulta deverá atender as condições específicas a seguir:
  • Um dos operandos da E o operador é uma expressão que contém o OR operador.
  • Os operandos daORoperador contêm expressões que referenciam a mesma coluna. Portanto, um índice da coluna pode ser usado para coincidir com as expressões.
  • O outro operando da Eoperador contém uma referência a uma coluna que usa o mesmo índice da coluna que está especificado no ponto de marcador anterior desta lista. Portanto, o índice pode ser usado também nessa expressão.
Por exemplo, suponha que você crie as tabelas a seguir que usam os índices em um banco de dados do SQL Server Compact 3. 5.
CREATE TABLE T1( C1 int, C2 int)GOCREATE INDEX IND_T1 ON T1 (C1, C2)GOCREATE TABLE T2( C1 int, C2 int)GOCREATE INDEX IND_T2 ON T2 (C1, C2)GOINSERT INTO T1 VALUES (1, 0)GOINSERT INTO T1 VALUES (2, 0)GOINSERT INTO T2 VALUES (1, -1)GOINSERT INTO T2 VALUES (2, 0)GO
Em seguida, você pode executar a consulta a seguir:
SELECT T1.C1 [T1.C1], T1.C2 [T1.C2], T2.C1 [T2.C1], T2.C2 [T2.C2]FROM T1 INNER JOIN T2 ONT1.C1 = T2.C1AND (T1.C2 = T2.C2 OR T2.C2 = -1)GO
Depois de executar a consulta, você receberá o seguinte resultado incorreto:
T1.C1T1.C2T2.C1T2.C2
2020
No entanto, você pode esperar o seguinte resultado:
T1.C1T1.C2T2.C1T2.C2
101-1
2020
ObservaçãoEsse problema também ocorre quando você usa oONDEcláusula para realizar uma conjunção lógica em duas expressões. Por exemplo, este problema também ocorre quando você executa a consulta a seguir:
SELECT T1.C1 [T1.C1], T1.C2 [T1.C2], T2.C1 [T2.C1], T2.C2 [T2.C2]FROM T1 INNER JOIN T2 ONT1.C1 = T2.C1WHERE T1.C2 = T2.C2 OR T2.C2 = -1GO
Resolução
O hotfix que resolve esse problema está incluído no pacote de atualização cumulativa 4 para o SQL Server Compact 3. 5 Service Pack 2.

Para obter mais informações sobre como obter o pacote de atualização cumulativa 4 para o SQL Server Compact 3. 5 Service Pack 2, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
2516828 Atualização cumulativa 4 para o SQL Server Compact 3. 5 Service Pack 2
Como Contornar
Para contornar esse problema, reescreva a consulta usando um dos seguintes métodos:

Método 1

Use dicas de tabela na consulta para desativar os índices. Por exemplo, execute a consulta a seguir para desativar os índices:
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)) ONT1.C1 = T2.C1AND (T1.C2 = T2.C2 OR T2.C2 = -1)GO 

Método 2

Reescrever a consulta para evitar que atendem às condições mencionadas na seção "Sintomas":
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)
Situação
A Microsoft confirmou que se trata de um problema nos produtos da Microsoft listados na seção "Aplica-se a".

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 2494715 - Última Revisão: 04/27/2011 09:19:00 - Revisão: 2.0

  • kbfix kbqfe kbexpertiseadvanced kbsurveynew kbmt KB2494715 KbMtpt
Comentários