CORRIGER : Des résultats incorrects lorsque vous exécutez une instruction INSERT sélectionnez UNION ALL dans 2008 de SQL Server ou SQL Server 2008 R2

Traductions disponibles Traductions disponibles
Numéro d'article: 2530921 - Voir les produits auxquels s'applique cet article

Microsoft distribue les correctifs de Microsoft SQL Server 2008 Microsoft SQL Server 2008 R2 Service Pack 1 en tant que fichier téléchargeable. Les correctifs étant cumulatifs, chaque nouvelle version contient tous les correctifs et des correctifs de sécurité fournies avec le SQL Server 2008 Service Pack 1 ou SQL Server 2008 R2 précédente version du correctif.
Agrandir tout | Réduire tout

Sommaire

Symptômes

Lorsque vous exécutez un INSERT SELECT UNION ALL instruction de SQL Server 2008 ou dans SQL Server 2008 R2, le résultat de l'instruction peut-être être incorrect si une table de source de la SÉLECTIONNEZ clause est utilisée comme table cible de la INSÉRER clause.

Par exemple, vous exécutez les instructions suivantes pour créer quatre tables :
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)
Vous insérez des valeurs dans la Onglets, TabB, et TabD tables, puis que vous exécutez la commande suivante INSERT SELECT UNION ALL instruction :

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
Dans ce scénario, vous recevez des résultats incorrects, et certains enregistrements ne sont pas correctement insérées dans la TabC table.

Résolution

Informations de mise à jour cumulative

SQL Server 2008 R2

Le correctif de ce problème a été tout d'abord publié dans la mise à jour Cumulative 9. Pour plus d'informations sur l'obtention de ce package de mise à jour cumulative pour SQL Server 2008 R2, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
2567713 Package de mise à jour cumulatif 9 pour SQL Server 2008 R2
Remarque Étant donné que les générations sont cumulatifs, chaque nouvelle version de correctif contient tous les correctifs et des correctifs de sécurité inclus avec la précédente 2008 R2 SQL Server version du correctif. Nous recommandons de procéder à 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 :
981356 SQL Server 2008 R2 versions publiées après la publication de SQL Server 2008 R2

SQL Server 2008 R2 Service Pack 1

Le correctif de ce problème a été tout d'abord publié dans la mise à jour Cumulative 2 pour SQL Server 2008 R2 Service Pack 1. Pour plus d'informations sur l'obtention de ce package de mise à jour cumulative, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
2567714 Package de mise à jour cumulative 2 pour SQL Server 2008 R2 Service Pack 1
Remarque Étant donné que les générations sont cumulatifs, chaque nouvelle version de correctif contient tous les correctifs et des correctifs de sécurité inclus avec la précédente 2008 R2 SQL Server version du correctif. Nous recommandons de procéder à 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 :
2567616 SQL Server 2008 R2 versions publiées après la publication de SQL Server 2008 R2 Service Pack 1

SQL Server 2008 Service Pack 2

Le correctif de ce problème a été tout d'abord publié dans les 5 mise à jour Cumulative pour SQL Server 2008 Service Pack 2. Pour plus d'informations sur ce package de mise à jour cumulative, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
2555408 Package de mise à jour cumulative 5 pour SQL Server 2008 Service Pack 2
Remarque Étant donné que les générations sont cumulatifs, chaque nouvelle version de correctif contient tous les correctifs et des correctifs de sécurité fournis avec la précédente 2008 de SQL Server version du correctif. Microsoft recommande que vous teniez compte de 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 :
2402659 Le 2008 SQL Server versions publiées après la publication de SQL Server 2008 Service Pack 2
Correctifs Microsoft SQL Server 2008 sont créés pour spécifiques SQL Server service packs. Vous devez appliquer un correctif SQL Server 2008 Service Pack 2 pour une installation de SQL Server 2008 Service Pack 2. Par défaut, ce correctif qui est fourni dans un service pack SQL Server est inclus dans le prochain service pack SQL Server.

Mise à jour SQL Server 2008 Service Pack 1 Cumulative 14

Le correctif de ce problème a été tout d'abord publié dans la mise à jour Cumulative 14 pour SQL Server 2008 Service Pack 1. Pour plus d'informations sur ce package de mise à jour cumulative, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
2527187 Package de mise à jour cumulative 14 pour SQL Server 2008 Service Pack 1
Remarque Étant donné que les générations sont cumulatifs, chaque nouvelle version de correctif contient tous les correctifs et des correctifs de sécurité fournis avec la précédente 2008 de SQL Server version du correctif. Microsoft recommande que vous teniez compte de 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 :
970365 Le 2008 SQL Server versions publiées après la publication de SQL Server 2008 Service Pack 1
Microsoft SQL Server 2008 correctifs sont créés pour les packs de service spécifiques SQL Server. Vous devez appliquer un correctif SQL Server 2008 Service Pack 1 pour une installation de SQL Server 2008 Service Pack 1. Par défaut, ce correctif qui est fourni dans un service pack SQL Server est inclus dans le prochain service pack SQL Server.

Statut

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

Propriétés

Numéro d'article: 2530921 - Dernière mise à jour: lundi 15 août 2011 - Version: 3.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • 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
Mots-clés : 
kbqfe kbexpertiseadvanced kbsurveynew kbfix kbmt KB2530921 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: 2530921
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