CORRECTIF : une requête UNION paramétrée dans une procédure stockée renvoie des résultats incorrects

Traductions disponibles Traductions disponibles
Numéro d'article: 822033 - Voir les produits auxquels s'applique cet article
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Agrandir tout | Réduire tout

Sommaire

Symptômes

Lorsque vous exécutez une procédure stockée sur un ordinateur équipé de plusieurs processeurs, la procédure stockée peut renvoyer un nombre de lignes ou des résultats incorrects incorrect si les conditions suivantes sont remplies :
  • La procédure stockée possède une requête qui s'exécute en parallèle.
  • La requête crée une table dérivée et que la table est le résultat d'une UNION ou d'une opération UNION ALL.
  • Au moins une branche de la requête UNION utilise une valeur paramètre transmises à la procédure comme une expression constante dans sa liste de SELECT.
  • La table dérivée générée par la requête UNION est joint avec une autre table Utilisation d'une colonne renvoyant un des valeurs de constante de paramètre transmis à la procédure.
  • La requête utilise une stratégie de jointure de hachage qui repose sur le partitionnement en fonction de la colonne de jointure.

Cette requête est un exemple de la syntaxe peut provoquer le problème se produit :
create procedure example_proc @P1 int
as
select * from 
				    ( select @P1 as x, ColB as y from T1
          union all
          select ColA as x, ColB as y from T2
        ) as DerivedT
 Join T3 
    on DerivedT.x = T3.ColA
go

Résolution

Informations sur le service pack

Pour résoudre ce problème, procurez-vous le dernier service pack Microsoft SQL Server 2000. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
290211 Comment obtenir le dernier pack de service SQL Server 2000

Informations sur le correctif

La version anglaise de ce correctif dispose les attributs de fichier (ou attributs de fichier version ultérieure) répertoriés dans le tableau suivant. Les dates et heures de ces fichiers sont exprimées en temps universel coordonné (UTC). Lorsque vous affichez les informations de fichier, il est convertie en heure locale. Pour connaître le décalage entre l'heure UTC et l'heure locale, utilisez l'onglet Fuseau horaire dans l'outil Date et heure du Panneau de configuration.
   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
   11-Jul-2003  17:04                  1,084,147 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      
   11-Jul-2003  16:56                  1,085,925 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    
   10-Jul-2003  22:00  2000.80.840.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      
				
note En raison des dépendances de fichiers, la fonctionnalité qui contient les fichiers ou correctif plus récent peut également contenir des fichiers supplémentaires.

Contournement

Pour contourner ce problème, utilisez l'une des méthodes suivantes :
  • Désactiver le parallélisme de requête pour la requête en ajoutant l'indicateur de requête OPTION (MAXDOP 1). Cela produira le même résultat que la résolution de bogue. La résolution de bogue détecte si l'option MAXDOP est définie sur 1 et désactive automatiquement le parallélisme pour ce type de requête.
  • Stocker les paramètres de la procédure stockée dans les variables locales et transmettre les variables locales à la requête sous forme de paramètres.
  • Force une stratégie de jointure différent, tel qu'une jointure de boucle ou une jointure de fusion et publipostage.

Statut

Microsoft a confirmé que c'est un problème dans les produits Microsoft répertoriés dans la section « S'applique à ».Ce problème a été corrigé dans Microsoft SQL Server 2000 Service Pack 4.

Plus d'informations

Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
824684 Description de la terminologie standard utilisée pour décrire les mises à jour logicielles Microsoft

Propriétés

Numéro d'article: 822033 - Dernière mise à jour: jeudi 27 février 2014 - Version: 8.2
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft SQL Server 2000 Édition Développeur
  • Microsoft SQL Server 2000 Standard
  • Microsoft SQL Server 2000 Édition Entreprise
  • Microsoft SQL Server 2000 Édition Personelle
  • Microsoft SQL Server 2000 Workgroup Edition
  • Microsoft SQL Server 2000 Desktop Engine (Windows)
  • Microsoft SQL Server 2000 Enterprise Edition 64-bit
Mots-clés : 
kbnosurvey kbarchive kbmt kbqfe kbquery kbstoredproc kbsqlserv2000presp4fix kbfix kbbug KB822033 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: 822033
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.

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