FIX: Il cursore del lato server può restituire risultati non corretti

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.

286788
Questo articolo è stato archiviato. L’articolo, quindi, viene offerto “così come è” e non verrà più aggiornato.
BUG #: 351513 (Shiloh_bugs)
BUG #: 101092 (SQLBUG_70)
Sintomi
Un cursore del lato dinamico o gestito da keyset, server potrebbe restituire risultati non corretti se vengono soddisfatte tutte le condizioni seguenti:
  • La query utilizza un'istruzione Sub-SELECT come un elenco di colonne.
  • La funzione COUNT(*) viene utilizzata la Sub-SELECT.
  • Il Sub-SELECT dispone di un join ANSI con una condizione.
  • La tabella di clausola FROM esterna include un join Transact-SQL con un Sub-SELECT.
Risoluzione

SQL Server 2000

Per risolvere il problema, ottenere il service pack più recente per SQL Server 2000. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
290211INF: Come ottenere il Service Pack più recente per SQL Server 2000

SQL Server 7.0

Per risolvere il problema, ottenere il service pack più recente per Microsoft SQL Server 7.0. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
301511INF: Come ottenere il Service Pack più recente per SQL Server 7.0
Status
Microsoft ha confermato che questo problema riguarda i prodotti Microsoft elencati all'inizio di questo articolo.

SQL Server 2000
Il problema è stato risolto nel Service Pack 1 per SQL Server 2000.

SQL Server 7.0
Questo problema è stato innanzitutto corretto in SQL Server 7.0 Service Pack 4.
Informazioni
Per riprodurre il problema, eseguire questo codice:
CREATE TABLE  TABLE1( T1COL1 int NOT NULL PRIMARY KEY)goCREATE TABLE  TABLE2( T2COL1 int NOT NULL PRIMARY KEY, T2COL2 int NOT NULL )goCREATE TABLE TABLE3(	T3COL1 int NOT NULL)goInsert into TABLE1(T1COL1) values(4)Insert into TABLE1(T1COL1) values(3)Insert into TABLE2(T2COL1, T2COL2) values(5, 3)Insert into TABLE2(T2COL1, T2COL2) values(6, 4)Insert into TABLE3(T3COL1) values(6)go-------------- REPRO SCRIPT (Correct result would be 0,1) -------------declare test cursor keyset for Select (select count(*)      from dbo.TABLE2 as T2 join dbo.TABLE3 as T3 on T3.T3COL1 = T2.T2COL1      where T2.T2COL2 = T1.T1COL1) as Para from dbo.TABLE1 as T1open testfetch testfetch testdeallocate test--------------- Workaround (Join condition moved to WHERE clause) ----------------declare test cursor keyset local for Select (select count(*)      from dbo.TABLE2 as T2, dbo.TABLE3 as T3       where T2.T2COL2 = T1.T1COL1 and T3.T3COL1 = T2.T2COL1) as Para       from dbo.TABLE1 as T1open testfetch testfetch testdeallocate test				
SSrvTran_SQL

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 286788 - Ultima revisione: 01/16/2015 21:31:32 - Revisione: 3.2

  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • kbnosurvey kbarchive kbmt kbbug kbfix kbsqlserv2000sp1fix KB286788 KbMtit
Feedback