Você está offline; aguardando reconexão

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.

Clique aqui para ver a versão em Inglês deste artigo: 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
/html>