CORRECÇÃO: Uma consulta SELECT inesperadamente devolve um número incorrecto de linhas no SQL Server 2005 Mobile Edition e no SQL Server 2005 Compact Edition

Traduções de Artigos Traduções de Artigos
Artigo: 933697 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Quando executa uma consulta SELECT no Microsoft SQL Server 2005 Mobile Edition e no Microsoft SQL Server 2005 Compact Edition, a consulta inesperadamente devolve um número incorrecto de linhas. Este problema ocorre caso se verifiquem as seguintes condições:
  • A consulta SELECT contém uma associação interna.
  • Uma das duas tabelas que façam parte tem um índice na coluna associada. A tabela não tem nenhum índice em qualquer uma das respectivas colunas.
Por exemplo, execute a seguinte consulta no SQL Server 2005 Mobile Edition:
select * from T1, T2 where T1.Col = T2.Col1 order by T1.Col
NOTA: neste exemplo, a tabela T1 tem um índice na coluna coluna... tabela T2 não tem um índice na coluna Col1.

Causa

Este problema ocorre porque o Optimizador de consultas não rejeita completamente o plano anterior. O Optimizador de consultas considera vários planos de consulta antes de decide o Optimizador de consultas no melhor plano para executar uma consulta. Em alguns casos, o Optimizador de consultas pode encontrar um plano que utiliza um índice para avaliar a condição. No entanto, o Optimizador de consultas mais tarde possível um melhor plano. Neste caso, o Optimizador de consultas rejeita o plano anterior para utilizar o melhor plano.

Resolução

Para resolver este problema, utilize um dos seguintes métodos:
  • Crie um índice na coluna associada na segunda tabela.
  • Elimine o índice da coluna associada na primeira tabela.
Nota No exemplo na secção "Sintomas", a coluna associada da segunda tabela é T2.Col1. A coluna associada na primeira tabela for T1.Col.

Ponto Da Situação

A Microsoft confirmou que este erro ocorre nos produtos do Microsoft listados na secção "Aplica-se a".

Mais Informação

Passos para reproduzir o problema

  1. Execute as seguintes instruções de uma base de dados do 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
    ocorrer o problema descrito na secção "Sintomas".

Propriedades

Artigo: 933697 - Última revisão: 13 de março de 2007 - Revisão: 1.2
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á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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 933697

Submeter comentários

 

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