Oprava: Kurzorů straně server může vrátit nesprávné výsledky

Překlady článku Překlady článku
ID článku: 286788 - Produkty, které se vztahují k tomuto článku.
Chyba #: 351513 (Shiloh_bugs)
CHYBA Č: 101092 (SQLBUG_70)
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Příznaky

Kurzor straně dynamické nebo úsilím sady klíčů, server může vrátit nesprávné výsledky, pokud jsou splněny následující podmínky:
  • Dotaz používá Sub-SELECT příkaz jako seznam sloupců.
  • Sub-SELECT používá funkci COUNT(*).
  • Sub-SELECT má ANSI spojení s podmínku.
  • Vnější tabulka klauzuli FROM má Transact-SQL spojení s Sub-SELECT.

Řešení

SQL Server 2000

Tento problém vyřešíte pomocí nejnovější aktualizace service pack pro SQL Server 2000. Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
290211INF: Jak získat nejnovější aktualizaci Service Pack pro SQL Server 2000

SQL Server 7.0

Tento problém vyřešíte získat nejnovější aktualizaci service pack pro Microsoft SQL Server 7.0. Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
301511INF: Jak získat nejnovější aktualizaci Service Pack pro SQL Server 7.0

Prohlášení

Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny na začátku tohoto článku.

SQL Server 2000
Tento problém byl poprvé opraven v SQL Server 2000 Service Pack 1.

SQL Server 7.0
Tento problém byl poprvé opraven v Microsoft SQL Server 7.0 Service Pack 4.

Další informace

Problém reprodukovat, spusťte tento kód:
CREATE TABLE  TABLE1( T1COL1 int NOT NULL PRIMARY KEY)
go
CREATE TABLE  TABLE2(
 T2COL1 int NOT NULL PRIMARY KEY,
 T2COL2 int NOT NULL )
go

CREATE TABLE TABLE3(
	T3COL1 int NOT NULL)
go
Insert 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 T1
open test
fetch test
fetch test
deallocate 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 T1

open test
fetch test
fetch test
deallocate test
				

Vlastnosti

ID článku: 286788 - Poslední aktualizace: 31. října 2003 - Revize: 3.2
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Klíčová slova: 
kbmt kbbug kbfix kbsqlserv2000sp1fix KB286788 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:286788

Dejte nám zpětnou vazbu

 

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