REVISIÓN: El cursor del servidor puede devolver resultados incorrectos

Seleccione idioma Seleccione idioma
Id. de artículo: 286788 - Ver los productos a los que se aplica este artículo
Error nº: 351513 (Shiloh_bugs)
Nº DE ERROR: 101092 (SQLBUG_70)
Expandir todo | Contraer todo

En esta página

Síntomas

Un cursor dinámico o controlado por conjunto de claves de servidor puede devolver resultados incorrectos si se cumplen todas las condiciones siguientes:
  • La consulta utiliza una instrucción Sub-SELECT como una lista de columna.
  • El Sub-SELECT utiliza la función COUNT(*).
  • El Sub-SELECT tiene una combinación ANSI con una condición.
  • La tabla externa de cláusula FROM tiene una combinación de Transact-SQL con un Sub-SELECT.

Solución

SQL Server 2000

Para resolver este problema, consiga el Service Pack más reciente para SQL Server 2000. Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
290211INF: Cómo obtener el Service Pack más reciente de SQL Server 2000

SQL Server 7.0

Para resolver este problema, obtenga el service pack más reciente para Microsoft SQL Server 7.0. Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
301511INF: Cómo obtener el Service Pack más reciente de SQL Server 7.0

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a:" de este artículo.

SQL Server 2000
Este problema se corrigió por primera vez en SQL Server 2000 Service Pack 1.

SQL Server 7.0
Este problema se corrigió por primera vez en Pack 4 de Microsoft SQL Server 7.0.

Más información

Para reproducir el problema, ejecute este código:
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
				

Propiedades

Id. de artículo: 286788 - Última revisión: viernes, 31 de octubre de 2003 - Versión: 3.2
La información de este artículo se refiere a:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Palabras clave: 
kbmt kbbug kbfix kbsqlserv2000sp1fix KB286788 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 286788

Enviar comentarios

 

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