DetailPage-MSS-KB

Base de Dados de Conhecimento

ID do artigo: 933697 - Última revisão: terça-feira, 13 de março de 2007 - Revisão: 1.2

 

Nesta página

Sintomas

Quando você executa uma consulta seleção no Microsoft SQL Server 2005 Mobile Edition e no Microsoft SQL Server 2005 Compact Edition, a consulta inesperadamente retorna um número incorreto de linhas. Esse problema ocorre se as seguintes condições forem verdadeiras:
  • A consulta SELECT contém uma associação interna.
  • Uma das duas tabelas que fazem parte tem um índice na coluna associada. A outra tabela não possui índice em qualquer uma das suas colunas.
Por exemplo, você pode executar a consulta a seguir no SQL Server 2005 Mobile Edition:
select * from T1, T2 where T1.Col = T2.Col1 order by T1.Col
Observação neste exemplo, a tabela T1 tem um índice na coluna col... tabela T2 não tem um índice na coluna Col1.

Causa

Esse problema ocorre porque o otimizador de consulta não descartar o plano anterior completamente. O otimizador de consulta considera vários planos de consulta antes de decide o otimizador de consulta no plano de melhor para executar uma consulta. Em alguns casos, o otimizador de consulta pode encontrar um plano que usa um índice para avaliar a condição. No entanto, o otimizador de consulta posteriormente pode encontrar um plano melhor. Nesse caso, o otimizador de consulta descarta o plano anterior para usar o melhor plano.

Resolução

Para resolver esse problema, use um dos seguintes métodos:
  • Criar um índice na coluna associada na segunda tabela.
  • Exclua o índice da coluna associado na primeira tabela.
Observação No exemplo na seção "Sintomas", a coluna associada na segunda tabela é T2.Col1. A coluna associada na primeira tabela é T1.Col.

Situação

A Microsoft confirmou que esse é um problema nos produtos da Microsoft listados na seção "Aplica-se a".

Mais Informações

Etapas para reproduzir o problema

  1. Execute as seguintes instruções em um banco de dados no SQL Server 2005 Mobile Edition:
    CREATE TABLE T1 (COL INT);
    GO;
    CREATE INDEX T1_IDX ON T1 (COL);
    GO;
    INSERT INTO T1 VALUES (1);
    INSERT INTO T1 VALUES (2);
    INSERT INTO T1 VALUES (3);
    GO;
    CREATE TABLE T2 (COL1 INT, COL2 INT);
    GO;
    INSERT INTO T2 VALUES (1,1);
    INSERT INTO T2 VALUES (2,2);
    INSERT INTO T2 VALUES (3,3);
    GO;
  2. Execute a seguinte instrução:
    select * from T1, T2 where T1.Col = T2.Col1 order by T1.Col
    você enfrenta o problema descrito na seção "Sintomas".

A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2005 Mobile Edition
  • Microsoft SQL Server 2005 Compact Edition
Palavras-chave: 
kbmt kbtshoot kbexpertiseadvanced kbbug KB933697 KbMtpt
Tradução automáticaTradução automática
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: 933697  (http://support.microsoft.com/kb/933697/en-us/ )
Compartilhar
Opções de suporte adicionais
Fóruns de Suporte do Microsoft Community
Contate-nos diretamente
Localize um parceiro certificado da Microsoft
Microsoft Store