REVISIÓN: Resultados incorrectos cuando ejecuta una instrucción INSERT seleccione UNION ALL en SQL Server 2008 o en SQL Server 2008 R2

Seleccione idioma Seleccione idioma
Id. de artículo: 2530921 - Ver los productos a los que se aplica este artículo

Microsoft distribuye correcciones de Microsoft SQL Server 2008 Microsoft SQL Server 2008 R2 Service Pack 1 como un archivo descargable. Debido a que las revisiones son acumulativas, cada versión nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyen con la anterior SQL Server 2008 Service Pack 1 o SQL Server 2008 R2.
Expandir todo | Contraer todo

En esta página

Síntomas

Cuando se ejecuta un INSERTAR UNION SELECT ALL instrucción en SQL Server 2008 o en SQL Server 2008 R2, el resultado de la instrucción puede ser incorrecto si una tabla de origen de la SELECCIONE se utiliza la cláusula como la tabla de destino de la INSERTAR cláusula.

Por ejemplo, ejecute las instrucciones siguientes para crear cuatro tablas:
CREATE TABLE [TabA] (M VARCHAR(20), W VARCHAR(20)) CREATE TABLE [TabB] (M VARCHAR(20), W VARCHAR(20), R VARCHAR(20)) CREATE TABLE [TabC] (P VARCHAR(6), M CHAR(20), A NUMERIC(13)) CREATE TABLE [TabD] (P VARCHAR(6), W VARCHAR(20), M VARCHAR(20), D NUMERIC(13), E DATETIME, F DATETIME)
Insertar algunos valores en el TabA, TabB, y TabD tablas y, a continuación, ejecute el siguiente INSERTAR UNION SELECT ALL instrucción:

INSERT INTO [TabC] (P, M, A) SELECT T1.P,T1.M,T1.D / SUM(1) OVER(PARTITION BY P) FROM [TabD] T1 INNER JOIN [TabA] T2 ON (T1.M = T2.M AND T1.W = T2.W) WHERE NOT EXISTS (SELECT * FROM [TabC] E1 WHERE T1.P = E1.P) UNION ALL SELECT T1.P,T2.M,T1.D / SUM(1) OVER(PARTITION BY P) FROM [TabD] T1 INNER JOIN [TabB] T2 ON (T1.M = T2.R AND T1.W = T2.W) WHERE NOT EXISTS (SELECT * FROM [TabC] E1 WHERE T1.P = E1.P) GO
En este escenario, recibe resultados incorrectos, y algunos registros no incorrectamente se insertan en el TabC tabla.

Solución

Información sobre la actualización acumulativa

SQL Server 2008 R2

La solución a este problema se publicó en primer lugar en esta actualización acumulativa. Para obtener más información acerca de cómo obtener este paquete de actualización de seguridad acumulativa para SQL Server 2008 R2, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2567713 Paquete de actualización acumulativa 9 para SQL Server 2008 R2
Nota Debido a que las generaciones son acumulativas, cada nueva versión de revisión contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyen con la versión anterior de SQL Server 2008 R2. Le recomendamos que considere la posibilidad de aplicar la versión más reciente de revisión que contenga este hotfix. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
981356 SQL Server 2008 R2 se basa que se publicaron después del lanzamiento de SQL Server 2008 R2

SQL Server 2008 R2 Service Pack 1

La solución a este problema se lanzó en primer lugar en la actualización acumulativa 2 para SQL Server 2008 R2 Service Pack 1. Para obtener más información acerca de cómo obtener este paquete de actualización acumulativa, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2567714 Paquete acumulativo de actualizaciones 2 para SQL Server 2008 R2 Service Pack 1
Nota Debido a que las generaciones son acumulativas, cada nueva versión de revisión contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyen con la versión anterior de SQL Server 2008 R2. Le recomendamos que considere la posibilidad de aplicar la versión más reciente de revisión que contenga este hotfix. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2567616 SQL Server 2008 R2 se basa que se publicaron después del lanzamiento de SQL Server 2008 R2 Service Pack 1

SQL Server 2008 Service Pack 2

La corrección para este problema en primer lugar se lanzó en 5 de actualización acumulativa para Service Pack 2 de SQL Server de 2008. Para obtener más información acerca de este paquete de actualización acumulativa, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2555408 Paquete de actualización acumulativa 5 para SQL Server 2008 Service Pack 2
Nota Debido a que las generaciones son acumulativas, cada nueva versión de revisión contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyen con la anterior de SQL Server 2008. Microsoft recomienda que considere la posibilidad de aplicar la versión más reciente de revisión que contenga este hotfix. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2402659 El SQL Server de 2008 de generaciones que se publicaron después del lanzamiento de Service Pack 2 de SQL Server de 2008
Las revisiones de Microsoft SQL Server 2008 se crean para determinados service Pack de SQL Server. Debe aplicar una revisión de SQL Server 2008 Service Pack 2 para la instalación del Service Pack 2 de SQL Server de 2008. De forma predeterminada, cualquier revisión suministrada en un service pack de SQL Server se incluye en el próximo service pack de SQL Server.

SQL Server 2008 Service Pack 1 actualización acumulativa 14

La solución a este problema se publicó en primer lugar en acumulativa 14 para SQL Server 2008 Service Pack 1. Para obtener más información acerca de este paquete de actualización acumulativa, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2527187 Paquete de actualización acumulativa 14 para SQL Server 2008 Service Pack 1
Nota Debido a que las generaciones son acumulativas, cada nueva versión de revisión contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyen con la anterior de SQL Server 2008. Microsoft recomienda que considere la posibilidad de aplicar la versión más reciente de revisión que contenga este hotfix. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
970365 El SQL Server de 2008 de generaciones que se publicaron después del lanzamiento de SQL Server 2008 Service Pack 1
Microsoft SQL Server 2008 revisiones se crean para determinados service Pack de SQL Server. Debe aplicar una revisión de SQL Server 2008 Service Pack 1 para una instalación de SQL Server 2008 Service Pack 1. De forma predeterminada, cualquier revisión suministrada en un service pack de SQL Server se incluye en el próximo service pack de SQL Server.

Estado

Microsoft ha confirmado que se trata de un problema en los productos de Microsoft que se enumeran en la sección "Se refiere a:".

Propiedades

Id. de artículo: 2530921 - Última revisión: lunes, 15 de agosto de 2011 - Versión: 3.0
La información de este artículo se refiere a:
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Web
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Express
  • Microsoft SQL Server 2008 Enterprise Evaluation
  • Microsoft SQL Server 2008 Express with Advanced Services
  • Microsoft SQL Server 2008 Standard Edition for Small Business
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Express
  • Microsoft SQL Server 2008 R2 Express with Advanced Services
  • Microsoft SQL Server 2008 R2 Standard Edition for Small Business
  • Microsoft SQL Server 2008 R2 Web
  • Microsoft SQL Server 2008 R2 Workgroup
Palabras clave: 
kbqfe kbexpertiseadvanced kbsurveynew kbfix kbmt KB2530921 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): 2530921

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