REVISIÓN: Resultados incorrectos de una consulta paralela que usa una UNION y variables o parámetros

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): 822746
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Síntomas
Puede recibir resultados incorrectos, si la consulta cumple las condiciones siguientes:
  • La consulta especifica una UNION o UNION ALL de dos o más entradas.
  • En UNION, al menos una de las instrucciones SELECT devuelven el valor variable o parámetro (es decir, utiliza este valor en la lista de selección y no en donde cláusula).
  • La columna de devolver el valor de variable o parámetro se utiliza como una unión o columna de agrupamiento nivel superior en el árbol de la consulta y este operador se ejecuta en paralelo, necesidad de dividirse la secuencia de datos se basa en las columnas de agrupamiento o de combinación.

La siguiente consulta es un ejemplo de uno que está sujeta a este problema:
DECLARE @a SMALLINTSET @a=1SELECT yy, COUNT(*) FROM ( 	SELECT productid xx, @a yy FROM products	UNION ALL	SELECT productid xx, unitsinstock yy FROM products     ) zzGROUP BY yy
Nota Esta consulta no es un escenario de reproducir para la base de datos Northwind. Está ahí sólo para mostrar el formulario y la sintaxis de una consulta hipotética en una tabla hipotética denominada productos .
Solución

Información de Service Pack

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

Información de revisiones

La versión en inglés de esta revisión tiene los atributos de archivo enumerados en la siguiente tabla u otros posteriores. Las fechas y horas de estos archivos aparecen en la hora universal coordinada (UTC). La información de los archivos se convertirá a la hora local cuando la vea. Para averiguar la diferencia entre hora UTC y la hora local, utilice la ficha zona horaria de la herramienta fecha y hora en el panel de control.
   Date         Time   Version         Size             File name   ---------------------------------------------------------------------------   31-May-2003  18:45  2000.80.818.0      78,400 bytes  Console.exe         25-Jun-2003  01:01  2000.80.818.0      33,340 bytes  Dbmslpcn.dll        25-Apr-2003  02:12                    786,432 bytes  Distmdl.ldf   25-Apr-2003  02:12                  2,359,296 bytes  Distmdl.mdf   30-Jan-2003  01:55                        180 bytes  Drop_repl_hotfix.sql   23-Jun-2003  22:40  2000.80.837.0   1,557,052 bytes  Dtsui.dll           23-Jun-2003  22:40  2000.80.837.0     639,552 bytes  Dtswiz.dll          24-Apr-2003  02:51                    747,927 bytes  Instdist.sql   03-May-2003  01:56                      1,581 bytes  Inst_repl_hotfix.sql   08-Feb-2003  06:40  2000.80.765.0      90,692 bytes  Msgprox.dll         01-Apr-2003  02:07                      1,873 bytes  Odsole.sql   05-Apr-2003  01:46  2000.80.800.0      62,024 bytes  Odsole70.dll        07-May-2003  20:41  2000.80.819.0      25,144 bytes  Opends60.dll        02-Apr-2003  21:48  2000.80.796.0      57,904 bytes  Osql.exe            02-Apr-2003  23:15  2000.80.797.0     279,104 bytes  Pfutil80.dll        22-May-2003  22:57                     19,195 bytes  Qfe469571.sql   12-Jun-2003  16:37                  1,083,989 bytes  Replmerg.sql   04-Apr-2003  21:53  2000.80.798.0     221,768 bytes  Replprov.dll        08-Feb-2003  06:40  2000.80.765.0     307,784 bytes  Replrec.dll         05-May-2003  00:05                  1,085,874 bytes  Replsys.sql   01-Jun-2003  01:01  2000.80.818.0     492,096 bytes  Semobj.dll          31-May-2003  18:27  2000.80.818.0     172,032 bytes  Semobj.rll   29-May-2003  00:29                    115,944 bytes  Sp3_serv_uni.sql   01-Jun-2003  01:01  2000.80.818.0   4,215,360 bytes  Sqldmo.dll          07-Apr-2003  17:44                     25,172 bytes  Sqldumper.exe       19-Mar-2003  18:20  2000.80.789.0      28,672 bytes  Sqlevn70.rll   02-Jul-2003  00:18  2000.80.834.0     180,736 bytes  Sqlmap70.dll        08-Feb-2003  06:40  2000.80.765.0      57,920 bytes  Sqlrepss.dll        23-Jun-2003  22:40  2000.80.837.0   7,553,105 bytes  Sqlservr.exe        08-Feb-2003  06:40  2000.80.765.0      45,644 bytes  Sqlvdi.dll          25-Jun-2003  01:01  2000.80.818.0      33,340 bytes  Ssmslpcn.dll        01-Jun-2003  01:01  2000.80.818.0      82,492 bytes  Ssnetlib.dll        01-Jun-2003  01:01  2000.80.818.0      25,148 bytes  Ssnmpn70.dll        01-Jun-2003  01:01  2000.80.818.0     158,240 bytes  Svrnetcn.dll        31-May-2003  18:59  2000.80.818.0      76,416 bytes  Svrnetcn.exe        30-Apr-2003  23:52  2000.80.816.0      45,132 bytes  Ums.dll             02-Jul-2003  00:19  2000.80.834.0      98,816 bytes  Xpweb70.dll       			
Nota debido de dependencias de archivo, la revisión más reciente o característica que contiene los archivos pueden contener archivos adicionales.
Solución
Uno de los requisitos para provocar este escenario de resultados incorrectos es que la consulta selecciona un plan paralelo. Para evitar este problema, puede deshabilitar el paralelismo en el nivel de consulta utilizando un "MAXDOP 1" Sugerencia (consulte los libros en pantalla de SQL Server para obtener más información), o en un nivel de servidor estableciendo el parámetro de configuración "Máximo grado de paralelismo" en 1 (utilizando el procedimiento almacenado sp_configure ).
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. Este problema se corrigió por primera vez en Pack 4 de Microsoft SQL Server 2000.

Advertencia: este artículo se tradujo automáticamente

Propiedades

Id. de artículo: 822746 - Última revisión: 02/27/2014 16:00:59 - Revisión: 7.4

Microsoft SQL Server 2000 Developer Edition, Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2000 Enterprise Edition, Microsoft SQL Server 2000 Personal Edition, Microsoft SQL Server 2000 Workgroup Edition, Microsoft SQL Server 2000 Desktop Engine (Windows), Microsoft SQL Server 2000 Enterprise Edition 64-bit

  • kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbqfe kbsqlserv2000presp4fix kbfix kbbug KB822746 KbMtes
Comentarios