Al momento sei offline in attesa che la connessione Internet venga ristabilita

FIX: Query SELECT in modo imprevisto restituirà un numero non corretto di righe in SQL Server 2005 Mobile Edition e in SQL Server 2005 Compact Edition

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 933697
Sintomi
Quando si esegue una query di selezione in Microsoft SQL Server 2005 Mobile Edition e in Microsoft SQL Server 2005 Compact Edition, la query restituisce in modo imprevisto di un numero di righe non corretto. Questo problema si verifica se le seguenti condizioni sono vere:
  • La query SELECT contiene un inner join.
  • Una delle due tabelle che fanno parte dispone un indice nella colonna di join. L'altri tabella non dispone di alcun indice su una delle relative colonne.
Ad esempio, è possibile eseguire la query riportata di seguito in SQL Server 2005 Mobile Edition:
select * from T1, T2 where T1.Col = T2.Col1 order by T1.Col
Nota In questo esempio, la tabella T1 ha indice nella colonna colonna tabella T2 non dispone di un indice sulla colonna Col1.
Cause
Questo problema si verifica perché query optimizer non eliminare il piano precedente completamente. Prima di query optimizer opta per il piano migliore per eseguire una query, query optimizer considera più piani di query. In alcuni casi, è possibile che query optimizer di trovare un piano che utilizza un indice per valutare la condizione. Tuttavia, in query optimizer in seguito potrebbe essere un migliore piano. In questo caso, query optimizer Elimina piano precedente per utilizzare il piano migliore.
Risoluzione
Per risolvere il problema, utilizzare uno dei seguenti metodi:
  • Creare un indice nella colonna join nella seconda tabella.
  • Eliminare l'indice della colonna join nella prima tabella.
Nota Nell'esempio nella sezione "Sintomi", la colonna join nella seconda tabella è T2.Col1. La colonna join nella prima tabella è T1.Col.
Status
Microsoft ha confermato che questo un bug nei prodotti sono elencati nella sezione "Si applica a".
Informazioni

Procedura per riprodurre il problema

  1. Eseguire le seguenti istruzioni in un database in 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. Eseguire la seguente istruzione:
    select * from T1, T2 where T1.Col = T2.Col1 order by T1.Col
    si verifica il problema descritto nella sezione "Sintomi".

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 933697 - Ultima revisione: 03/13/2007 19:39:22 - Revisione: 1.2

Microsoft SQL Server 2005 Mobile Edition, Microsoft SQL Server 2005 Compact Edition

  • kbmt kbtshoot kbexpertiseadvanced kbbug KB933697 KbMtit
Feedback