REVISIÓN: Resultados incorrectos cuando ejecuta una consulta FULL JOIN que utiliza la cláusula CROSS APPLY en SQL Server 2008 R2 o en SQL Server 2012

Seleccione idioma Seleccione idioma
Id. de artículo: 2800797 - Ver los productos a los que se aplica este artículo
Microsoft distribuye las correcciones de Service Pack 2 (SP2) de Microsoft SQL Server 2008 R2 como un archivo descargable. Dado que las revisiones son acumulativas, cada versión nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la anterior SQL Server 2008 R2 Service Pack 2.
Expandir todo | Contraer todo

En esta página

Síntomas

Puede recibir resultados incorrectos cuando ejecuta una consulta en Microsoft SQL Server 2008 R2 Service Pack 2 o Microsoft SQL Server 2012 cuando se cumplen las condiciones siguientes:
  • La consulta usa una cláusula CROSS APPLY sobre el resultado de una cláusula JOIN completo .
  • Los datos de la tabla se proporcionan mediante una llamada a una función definida por el usuario con valores de tabla en la cláusula JOIN completo .
  • La función acepta un nombre de columna como un parámetro y devuelve los resultados como una tabla.
Por ejemplo, ejecutar una consulta similar al siguiente:
SELECT * FROM tablename 
CROSS APPLY (
    SELECT * FROM
        (SELECT * FROM [dbo].[func_GetTableFromXml](xmlColumn) WHERE nodeParentName = 'New') s1 
    FULL JOIN 
        (SELECT * FROM [dbo].[func_GetTableFromXml](xmlColumn) WHERE nodeParentName = 'Old') s2 
    ON s1.nodeName = s2.nodeName
    ) s 
Nota Este problema no ocurre en Microsoft SQL Server 2012.

Solución

Información sobre la actualización acumulativa

Actualización acumulativa 7 para SQL Server 2012

En primer lugar, la solución a este problema se publicó en esta actualización acumulativa. Para obtener más información acerca de cómo obtener este paquete de actualización acumulativa para SQL Server 2012, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2823247 Paquete de actualización acumulativa 7 para SQL Server 2012
Nota Como las compilaciones son acumulativas, cada nueva versión de revisión contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluían con la anterior de SQL Server 2012. Le recomendamos que considere la posibilidad de aplicar la versión más reciente de revisión que contenga esta revisión. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2692828 Compilaciones de 2012 de SQL Server que se publicaron después del lanzamiento de SQL Server 2012

Actualización acumulativa 3 para Service Pack 1 de SQL Server 2012

En primer lugar, la solución a este problema se publicó en actualización acumulativa 3. Para obtener más información acerca de cómo obtener este paquete de actualización acumulativa para Service Pack 1 de SQL Server 2012, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2812412 Paquete de actualización acumulativa 3 para Service Pack 1 de SQL Server 2012
Nota Como las compilaciones son acumulativas, cada nueva versión de revisión contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron en el anterior Service Pack 1 de SQL Server 2012. Le recomendamos que considere la posibilidad de aplicar la versión más reciente de revisión que contenga esta revisión. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2772858 Compilaciones de 2012 de SQL Server que se publicaron después del lanzamiento de Service Pack 1 de SQL Server 2012

5 De actualización acumulativa para Service Pack 2 de SQL Server 2008 R2

La solución a este problema en primer lugar se publicó en la actualización acumulativa 5. Para obtener más información acerca de cómo obtener este paquete de actualización acumulativa para SQL Server 2008 R2 Service Pack 2, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2797460 Paquete 5 de la actualización acumulativa para Service Pack 2 de SQL Server 2008 R2
Nota Como las compilaciones son acumulativas, cada nueva versión de revisión contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron en el SP 2 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 esta revisión. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2730301 Compilaciones de SQL Server 2008 R2 se publicaron después del lanzamiento de SQL Server 2008 R2 Service Pack 2

Estado

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

Solución

Para evitar este problema, utilice la cláusula MERGE JOIN completo en lugar de una cláusula JOIN completo .

Por ejemplo, cambiar la consulta que se menciona en la sección "Síntomas" para que la consulta se parece a lo siguiente:
SELECT * FROM tablename 
CROSS APPLY (
    SELECT * FROM
        (SELECT * FROM [dbo].[func_GetTableFromXml](xmlColumn) WHERE nodeParentName = 'New') s1 
    FULL MERGE JOIN 
        (SELECT * FROM [dbo].[func_GetTableFromXml](xmlColumn) WHERE nodeParentName = 'Old') s2 
    ON s1.nodeName = s2.nodeName
    ) s

Más información

Para obtener más información acerca de cómo utilizar la cláusula CROSS APPLY , visite el siguiente sitio Web de Microsoft TechNet:
Información general acerca de cómo utilizar la cláusula CROSS APPLY

Propiedades

Id. de artículo: 2800797 - Última revisión: lunes, 15 de abril de 2013 - Versión: 3.0
La información de este artículo se refiere a:
  • Microsoft SQL Server 2008 R2 Service Pack 2
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Web
  • Microsoft SQL Server 2008 R2 Workgroup
  • Microsoft SQL Server 2008 R2 Express
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Express
  • Microsoft SQL Server 2012 Standard
  • Microsoft SQL Server 2012 Web
  • SQL Server 2012 Enterprise Core
Palabras clave: 
kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB2800797 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): 2800797

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