CORRECTIF : Utilisation xp_sendmail avec une COMPUTE, clause provoque une violation d'accès

Traductions disponibles Traductions disponibles
Numéro d'article: 819955 - 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.
BOGUE #: 469145 (SHILOH_BUGS)
Agrandir tout | Réduire tout

Sommaire

Symptômes

Un appel de xp_sendmail procédure stockée étendue peut provoquer une violation d'accès gérée lorsque les conditions suivantes sont remplies :
  • L'appel de xp_sendmail doit utiliser le @query paramètre pour envoyer un jeu d'enregistrements.
  • La requête transmise à la @query paramètre doit comprendre une clause COMPUTE.
  • La requête ne doit renvoyer aucune ligne.
Voici un exemple d'une requête qui peut rencontrer ce problème :
 EXEC master..xp_sendmail 
 @recipients = 'recipient_email_address',
 @message = 'Total Sum of Job ID' ,
 @subject = 'Compute Sum',
 @width = 133 ,
 @query = 'SELECT emp_id, fname, minit, lname, job_id, job_lvl, pub_id FROM pubs.dbo.employee WHERE 1=0 COMPUTE SUM (job_id)'
xp_sendmail @ destinataires = 'recipient_email_address' @ message = 'total somme du travail ID' @ objet = « somme Compute », @ largeur = 133, @ requête = ' SELECT emp_id fname minit, lname, job_id, job_lvl, pub_id FROM pubs.dbo.employee WHERE 1 = 0 COMPUTE somme (job_id) ' Remarque ce problème est une régression affecte uniquement un petit nombre de versions de 3 des correctifs post-SQL Server 2000 Service Pack. Ce problème s'applique uniquement aux ordinateurs serveur qui exécutent des versions des correctifs SQL Server 2000 entre version 780 et 807 (inclusive). Vérifiez la version du fichier Sqlmap70.dll qui se trouve dans le dossier BINN de l'instance de SQL Server pour déterminer si l'instance est affectée. La version des fichiers concernés a les attributs suivants :
   Date         Time   Version        Size           File name
   --------------------------------------------------------------
   28-Feb-2003  01:34  2000.80.778.0  176,696 bytes  Sqlmap70.dll
				

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

note Ce correctif (build 811) applicable uniquement à SQL Server 2000 Service Pack 3.

La version anglaise de ce correctif dispose des attributs de fichier (ou version ultérieure) répertoriés dans le tableau suivant. Les dates et heures de ces fichiers sont exprimées en coordinated universal temps (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
   -------------------------------------------------------------------------------
   26-Feb-2003  03:41  2000.80.777.0      29,244 bytes  Dbmslpcn.dll     
   08-Feb-2003  05:43                    786,432 bytes  Distmdl.ldf
   08-Feb-2003  05:43                  2,359,296 bytes  Distmdl.mdf
   30-Jan-2003  01:55                        180 bytes  Drop_repl_hotfix.sql
   07-Apr-2003  19:15  2000.80.801.0   1,557,052 bytes  Dtsui.dll        
   24-Apr-2003  02:51                    747,927 bytes  Instdist.sql
   30-Jan-2003  01:55                      1,402 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     
   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     
   04-Apr-2003  21:27                  1,083,467 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      
   01-Apr-2003  02:23                  1,084,828 bytes  Replsys.sql
   16-Apr-2003  22:39                    115,892 bytes  Sp3_serv_uni.sql
   07-Apr-2003  17:44                     25,172 bytes  Sqldumper.exe    
   19-Mar-2003  18:20  2000.80.789.0      28,672 bytes  Sqlevn70.rll
   24-Apr-2003  05:39  2000.80.811.0     176,696 bytes  Sqlmap70.dll     
   08-Feb-2003  06:40  2000.80.765.0      57,920 bytes  Sqlrepss.dll     
   24-Apr-2003  05:39  2000.80.811.0   7,540,817 bytes  Sqlservr.exe     
   08-Feb-2003  06:40  2000.80.765.0      45,644 bytes  Sqlvdi.dll       
   26-Feb-2003  03:41  2000.80.777.0      29,244 bytes  Ssmslpcn.dll     
   26-Feb-2003  03:41  2000.80.777.0      82,492 bytes  Ssnetlib.dll     
   28-Feb-2003  01:34  2000.80.778.0      98,872 bytes  Xpweb70.dll
note raison de dépendances entre fichiers, la dernière fonctionnalité ou correctif qui contient les fichiers peut également contenir des fichiers.

Statut

Microsoft a confirmé que c'est un problème dans les produits Microsoft répertoriés au début de cet article. Ce problème a été corrigé dans Microsoft SQL Server 2000 Service Pack 4.

Contournement

Pour contourner le problème vous pouvez modifier la requête afin qu'il effectue uniquement une clause COMPUTE lorsqu'il y a des lignes à retourner. Par exemple, vous pouvez modifier la requête dans la section « Symptômes » comme suit pour éviter le problème :
EXEC master..xp_sendmail 
 @recipients = 'recipient_email_address',
 @message = 'Total Sum of Job ID' ,
 @subject = 'Compute Sum',
 @width = 133 ,
 @query = 'IF EXISTS (SELECT 1  FROM pubs.dbo.employee WHERE 1=0)  SELECT emp_id, fname, minit, lname, job_id, job_lvl, pub_id FROM pubs.dbo.employee WHERE 1=0 COMPUTE SUM (job_id) ELSE SELECT ''No Data'' as [SUM]'
xp_sendmail @ destinataires = 'recipient_email_address' @ message = 'total somme du travail ID' @ objet = « somme Compute », @ largeur = 133, @ requête = ' Si EXISTS (SELECT 1 FROM pubs.dbo.employee WHERE 1 = 0) SELECT emp_id fname minit, lname, job_id, job_lvl, pub_id FROM pubs.dbo.employee WHERE 1 = 0 COMPUTE SELECT ELSE somme (job_id) '' aucune donnée » en tant que [somme] »

Propriétés

Numéro d'article: 819955 - Dernière mise à jour: lundi 24 février 2014 - Version: 9.4
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 kbhotfixserver kbqfe kbqfe kbsqlserv2000presp4fix kbfix kbbug KB819955 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: 819955
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