CORRECTIF : Des résultats incorrects lorsque vous exécutez une requête FULL JOIN qui utilise la clause de CROSS APPLY dans SQL Server 2008 R2 ou dans SQL Server 2012

Traductions disponibles Traductions disponibles
Numéro d'article: 2800797 - Voir les produits auxquels s'applique cet article
Microsoft distribue les correctifs de Microsoft SQL Server 2008 R2 Service Pack 2 (SP2) sous la forme d'un fichier téléchargeable unique. Les correctifs étant cumulatifs, chaque nouvelle version contient tous les correctifs et correctifs de sécurité inclus avec la précédente SQL Server 2008 R2 Service Pack 2 version du correctif.
Agrandir tout | Réduire tout

Sommaire

Symptômes

Vous pouvez recevoir des résultats incorrects lorsque vous exécutez une requête dans Microsoft SQL Server 2008 R2 avec SP2 ou dans Microsoft SQL Server 2012 lorsque les conditions suivantes sont remplies :
  • La requête utilise une clause de CROSS APPLY sur le résultat d'une clause JOIN complet .
  • Les données du tableau sont fournies en appelant une fonction définie par l'utilisateur de table dans la clause JOIN complet .
  • La fonction accepte un nom de colonne en tant que paramètre et retourne les résultats sous forme de tableau.
Par exemple, vous exécutez une requête semblable au suivant :
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 
Remarque : Ce problème ne se produit pas dans Microsoft SQL Server 2012.

Résolution

Informations de mise à jour cumulative

Mise à jour cumulative 7 pour SQL Server 2012

Le correctif de ce problème a été tout d'abord publié de mise à jour Cumulative 7. Pour plus d'informations sur l'obtention de ce package de mise à jour cumulative pour SQL Server 2012, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
2823247 Package de mise à jour cumulative 7 pour SQL Server 2012
Remarque : Les versions étant cumulatives, chaque nouvelle version de correctif contient tous les correctifs et correctifs de sécurité inclus avec la précédente 2012 de SQL Server version du correctif. Nous vous recommandons l'application la plus récente version du correctif qui comprendra ce correctif. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
2692828 Le 2012 de SQL Server versions publiées après la publication de SQL Server 2012

Mise à jour cumulative 3 pour SQL Server 2012 SP1

Le correctif de ce problème a été tout d'abord publié de mise à jour Cumulative 3. Pour plus d'informations sur l'obtention de ce package de mise à jour cumulative pour SQL Server 2012 SP1, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
2812412 Package de mise à jour cumulative 3 pour SQL Server 2012 Service Pack 1
Remarque : Les versions étant cumulatives, chaque nouvelle version de correctif contient tous les correctifs et correctifs de sécurité inclus dans le précédent Service Pack 1 SQL Server 2012 version du correctif. Nous vous recommandons l'application la plus récente version du correctif qui comprendra ce correctif. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
2772858 Le 2012 de SQL Server versions publiées après la publication du Service Pack 1 SQL Server 2012

Mise à jour cumulative 5 pour SQL Server 2008 R2 SP2

Le correctif de ce problème a été tout d'abord publié dans les 5 mise à jour Cumulative. Pour plus d'informations sur la façon d'obtenir ce package de mise à jour cumulative pour SQL Server 2008 R2 Service Pack 2, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
2797460 Package de mise à jour cumulative 5 pour SQL Server 2008 R2 Service Pack 2
Remarque : Les versions étant cumulatives, chaque nouvelle version de correctif contient tous les correctifs et correctifs de sécurité inclus avec la précédente SQL Server 2008 R2 Service Pack 2 version du correctif. Nous vous recommandons l'application la plus récente version du correctif qui comprendra ce correctif. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
2730301 SQL Server 2008 R2 versions publiées après la publication de SQL Server 2008 R2 Service Pack 2

Statut

Microsoft a confirmé qu'il s'agit d'un problème pour les produits Microsoft répertoriés dans la section « S'applique à ».

Contournement

Pour contourner ce problème, utilisez la clause de Jointure par fusion complète au lieu d'une clause JOIN complet .

Par exemple, vous modifiez la requête qui est mentionnée dans la section « Symptômes » afin que la requête semblable au suivant :
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

Plus d'informations

Pour plus d'informations sur l'utilisation de la clause de CROSS APPLY , accédez au site Web Microsoft TechNet suivant :
Informations générales sur l'utilisation de la clause de CROSS APPLY

Propriétés

Numéro d'article: 2800797 - Dernière mise à jour: lundi 15 avril 2013 - Version: 4.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • 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
Mots-clés : 
kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB2800797 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 2800797
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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