CORRECTIF : une fonction définie par l'utilisateur renvoie les résultats qui ne sont pas corrects pour une requête

Traductions disponibles Traductions disponibles
Numéro d'article: 883415 - Voir les produits auxquels s'applique cet article
Bogue #: 358054 (SQL Server 8.0)
Microsoft distribue les correctifs SQL Server 2000 comme un fichier téléchargeable. Les correctifs étant cumulatifs, chaque nouvelle version contient tous les correctifs et tous les correctifs de sécurité qui étaient fournis avec le SQL Server 2000 précédente version du correctif.
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article décrit suivants concernant cette version de correctif logiciel :
  • Problèmes résolus par ce package de correctifs.
  • Conditions préalables à l'installation du correctif logiciel ;
  • Si vous devez redémarrer votre ordinateur après avoir installé le package de correctifs.
  • Si le package de correctifs est remplacé par un autre package de correctifs.
  • Si vous devez apporter les modifications du Registre.
  • Les fichiers qui sont contenus dans le package de correctifs.


INTRODUCTION

Une fonction définie par l'utilisateur renvoie des résultats qui ne sont pas corrects pour une requête si les conditions suivantes sont remplies :
  • La clause GROUP BY contient deux ou plusieurs références à la même fonction définie par l'utilisateur.
  • Les appels à la fonction définie par l'utilisateur passer le premier paramètre même.
  • La fonction définie par l'utilisateur prend deux ou plusieurs paramètres et les résultats de la fonction définie par l'utilisateur renvoie dépendent de la valeur des paramètres secondaires.

important Pour résoudre ce problème, vous devez installer ce correctif et activer l'indicateur de suivi 9056. Vous pouvez activer l'indicateur de suivi 9056 en ajoutant -T9056 à la ligne de commande SQL Server ou en utilisant DBCC TRACEON(9056,-1) à partir d'une connexion de requête.


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

Conditions préalables

Ce correctif nécessite SQL Server 2000 Service Pack 3 (SP3). Pour plus d'informations sur la façon d'obtenir SQL Server 2000 Service Pack 3, 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

Redémarrez les informations

Vous devez redémarrer votre ordinateur après avoir appliqué ce correctif.

Informations de Registre

Vous devez mettre à jour le Registre après avoir appliqué ce correctif.

Informations sur le fichier de correctif

Ce correctif contient uniquement les fichiers nécessaires à la résolution des problèmes décrits dans cet article. Ce correctif peut ne pas contenir de tous les fichiers nécessaires à la mise à jour complètement un produit vers la dernière version.
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 coordinated (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
   ------------------------------------------------------------------------
   22-Jul-2004  15:00  2000.80.962.0     664,128  Autoplt.dll      
   22-Jul-2004  14:59  2000.80.962.0      78,400  Console.exe      
   22-Jul-2004  15:00  2000.80.962.0     315,968  Custtask.dll     
   22-Jul-2004  15:00  2000.80.962.0      33,340  Dbmslpcn.dll     
   08-Apr-2004  12:42                    786,432  Distmdl.ldf
   08-Apr-2004  12:42                  2,359,296  Distmdl.mdf
   10-Oct-2003  09:48                        180  Drop_repl_hotfix.sql
   22-Jul-2004  15:00  2000.80.962.0   1,905,216  Dtspkg.dll       
   22-Jul-2004  15:00  2000.80.962.0     528,960  Dtspump.dll      
   22-Jul-2004  15:00  2000.80.962.0   1,557,052  Dtsui.dll        
   22-Jul-2004  15:00  2000.80.962.0     639,552  Dtswiz.dll       
   10-Oct-2003  09:48                    747,927  Instdist.sql
   10-Oct-2003  09:48                      1,581  Inst_repl_hotfix.sql
   22-Jul-2004  14:59  2000.80.962.0     352,828  Isqlw.exe        
   22-Jul-2004  14:59  2000.80.962.0      82,492  Itwiz.exe        
   22-Jul-2004  15:00  2000.80.962.0      90,692  Msgprox.dll      
   19-May-2004  14:43  8.11.40209.0      209,408  Mssdi98.dll      
   22-Jul-2004  15:00  2000.80.962.0      62,024  Odsole70.dll     
   22-Jul-2004  15:00  2000.80.962.0      25,144  Opends60.dll     
   22-Jul-2004  14:59  2000.80.962.0      57,904  Osql.exe         
   22-Jul-2004  15:00  2000.80.962.0     279,104  Pfutil80.dll     
   10-Oct-2003  09:37                    550,780  Procsyst.sql
   08-Apr-2004  12:42                     12,305  Qfe469315.sql
   08-Apr-2004  12:42                     19,195  Qfe469571.sql
   21-Jul-2004  08:31                  1,105,167  Replmerg.sql
   22-Jul-2004  15:00  2000.80.962.0     221,768  Replprov.dll     
   22-Jul-2004  15:00  2000.80.962.0     307,784  Replrec.dll      
   21-Jul-2004  08:39  2000.80.962.0     159,813  Replres.rll
   10-Oct-2003  09:48                  1,087,150  Replsys.sql
   10-Oct-2003  09:48                    986,603  Repltran.sql
   22-Jul-2004  15:00  2000.80.962.0     287,304  Rinitcom.dll     
   22-Jul-2004  15:00  2000.80.962.0      78,416  Sdiclnt.dll      
   22-Jul-2004  15:00  2000.80.962.0      66,112  Semmap.dll       
   22-Jul-2004  15:00  2000.80.962.0      57,916  Semnt.dll        
   22-Jul-2004  15:00  2000.80.962.0     492,096  Semobj.dll       
   22-Jul-2004  14:12  2000.80.962.0     172,032  Semobj.rll
   22-Jul-2004  14:59  2000.80.962.0      53,832  Snapshot.exe     
   13-Jul-2004  11:59                    117,834  Sp3_serv_uni.sql
   22-Jul-2004  14:59  2000.80.962.0      28,672  Sqlagent.dll     
   22-Jul-2004  14:59  2000.80.962.0     311,872  Sqlagent.exe     
   22-Jul-2004  14:59  2000.80.962.0     168,001  Sqlakw32.dll     
   22-Jul-2004  15:00  2000.80.962.0      33,344  Sqlctr80.dll     
   22-Jul-2004  15:00  2000.80.962.0   4,215,360  Sqldmo.dll       
   22-Jul-2004  14:59                     25,172  Sqldumper.exe    
   21-Jul-2004  08:29  2000.80.962.0      28,672  Sqlevn70.rll
   22-Jul-2004  14:59  2000.80.962.0     156,224  Sqlmaint.exe     
   22-Jul-2004  15:00  2000.80.962.0     180,792  Sqlmap70.dll     
   22-Jul-2004  15:00  2000.80.962.0     188,992  Sqlmmc.dll       
   22-Jul-2004  14:20  2000.80.962.0     479,232  Sqlmmc.rll
   22-Jul-2004  15:00  2000.80.962.0     401,984  Sqlqry.dll       
   22-Jul-2004  15:00  2000.80.962.0      57,920  Sqlrepss.dll     
   22-Jul-2004  15:00  2000.80.962.0   7,581,777  Sqlservr.exe     
   22-Jul-2004  15:00  2000.80.962.0     590,396  Sqlsort.dll      
   22-Jul-2004  15:00  2000.80.962.0      45,644  Sqlvdi.dll       
   22-Jul-2004  15:00  2000.80.962.0     106,588  Sqsrvres.dll     
   22-Jul-2004  15:00  2000.80.962.0      33,340  Ssmslpcn.dll     
   22-Jul-2004  15:00  2000.80.962.0      82,492  Ssnetlib.dll     
   22-Jul-2004  15:00  2000.80.962.0      25,148  Ssnmpn70.dll     
   22-Jul-2004  15:00  2000.80.962.0     123,456  Stardds.dll      
   22-Jul-2004  15:00  2000.80.962.0     158,240  Svrnetcn.dll     
   22-Jul-2004  15:00  2000.80.962.0      76,416  Svrnetcn.exe     
   22-Jul-2004  15:00  2000.80.962.0      49,228  Ums.dll          
   22-Jul-2004  15:00  2000.80.962.0      98,872  Xpweb70.dll      

note En raison des dépendances de fichiers, la fonctionnalité qui contient ces fichiers ou correctif plus récent peut également contenir des fichiers supplémentaires.
Pour contourner ce problème, dans la clause GROUP BY, modifiez le nom du premier paramètre pour chaque fonction définie par l'utilisateur afin que la valeur de chaque paramètre premier reste inchangée, mais le nom de chaque premier paramètre est différent.

Pour modifier le nom du premier paramètre pour chaque fonction définie par l'utilisateur, appliquez l'une des deux exemples ci-dessous.
  • Si le premier paramètre est numérique, procédez comme suit :
    1. Multipliez le premier paramètre de la première fonction définie par l'utilisateur par 1.
    2. Multipliez le premier paramètre de la fonction définie par l'utilisateur seconde par 2 et ensuite le diviser par 2.
    3. Continuer à modifier le premier paramètre pour les autres fonctions définis par l'utilisateur de la même manière. Par exemple, multipliez le premier paramètre de la fonction définie par l'utilisateur troisième par 3.
  • Si le premier paramètre est une chaîne, procédez comme suit :
    1. Concaténer le premier paramètre de la première fonction définie par l'utilisateur avec une chaîne vide.

      Une chaîne vide est représentée par deux caractères d'apostrophe ayant aucun espace entre eux.
    2. Concaténer le premier paramètre de la deuxième fonction définie par l'utilisateur avec deux chaînes vides.
    3. Continuez à concaténer les paramètres premier des fonctions utilisateur restantes de la même manière. Par exemple, concaténer le premier paramètre de la fonction définie par l'utilisateur troisième avec trois chaînes vides.
notes
  • Pour le premier paramètre chaque fonction définie par l'utilisateur que vous modifiez dans la clause GROUP BY, vous devez également modifier le premier paramètre dans la clause SELECT de la fonction définie par l'utilisateur correspondante.
  • Une chaîne vide est représentée par deux caractères d'apostrophe, sans espace.

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 reproduire ce problème, le script d'exécution la Transact-SQL suivant :

USE tempdb
GO

SET NOCOUNT ON
GO

DROP TABLE T1
GO
CREATE TABLE T1 (
    c1 int NOT NULL,
    c2 int NOT NULL,
    c3 int NOT NULL
)
GO

INSERT INTO T1 VALUES ( 1, 2, 3 )
GO

DROP FUNCTION dbo.udf1
GO
CREATE FUNCTION dbo.udf1 ( @c1 int,  @c2 int ) RETURNS int
AS
BEGIN
    RETURN ( @c1 + @c2 )
END
GO

PRINT '*** This is correct.'
SELECT
    dbo.udf1( c1, c2 ),
    dbo.udf1( c3, c1 )
FROM T1 GROUP BY
    dbo.udf1( c1, c2 ),
    dbo.udf1( c3, c1 )
GO

PRINT '*** This is incorrect.'
PRINT '*** The value of 2nd column should be 4, not 3.'
SELECT
    dbo.udf1( c1, c2 ),
    dbo.udf1( c1, c3 )
FROM T1 GROUP BY
    dbo.udf1( c1, c2 ),
    dbo.udf1( c1, c3 )
GO

Références

Pour obtenir une liste de correctifs logiciels antérieurs, consultez la section « Microsoft SQL Server 2000 postérieur au Service Pack 3 Microsoft SQL Server 2000 postérieur au Service Pack 3 a correctifs ou » dans l'article suivant de la base de connaissances Microsoft :
290211 Comment obtenir le dernier pack de service SQL Server 2000
Pour plus d'informations sur le schéma d'appellation des mises à jour de Microsoft SQL Server, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
822499 Nouveau modèle d'affectation de noms pour les packages de correctifs logiciels Microsoft SQL Server
Pour plus d'informations sur la terminologie utilisée par Microsoft lors de la correction après leur publication de logiciels, 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: 883415 - Dernière mise à jour: vendredi 2 novembre 2007 - Version: 3.3
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft SQL Server 2000 Developer Edition SP3a
  • Microsoft SQL Server 2000 Standard
  • Microsoft SQL Server 2000 Édition Entreprise
  • Microsoft SQL Server 2000 Personal Edition SP3a
  • Microsoft SQL Server 2000 Enterprise Evaluation Edition
  • Microsoft SQL Server 2000 Workgroup Edition
  • Microsoft SQL Server 2000 Desktop Engine (MSDE) SP3a
  • Microsoft SQL Server 2000 Édition Développeur
  • Microsoft SQL Server 2000 Enterprise Edition 64-bit
Mots-clés : 
kbmt kbbug kbfix kbsqlserv2000presp4fix kbhotfixserver kbqfe KB883415 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: 883415
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