CORRECTIF : xp_enumgroups génère une violation d'accès lorsqu'un paramètre de grande taille lui est passé

Ancien nº de publication de cet article : F294338
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
N° DE BOGUE : 351927 (SHILOH_BUGS)
Symptômes
xp_enumgroups fournit une liste des groupes Microsoft Windows NT locaux ou une liste des groupes globaux définis dans un domaine Windows NT spécifique indiqué par le paramètre.

Si un paramètre de grande taille est passé à la procédure stockée xp_enumgroups, une violation d'accès est générée et la connexion est interrompue avec les messages d'erreur suivants :
ODBC : Msg 0, Niveau 19, État 1
SqlDumpExceptionHandler : Le processus 53 a généré une exception irrécupérable c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server achève ce processus.

ODBC : Msg 0, Niveau 20, État 1
La fonction stockée 'xp_enumgroups' dans la bibliothèque 'xplog70.dll' a généré une violation d'accès. SQL Server arrête le processus 53.

Connexion interrompue
Si la chaîne passée en tant que paramètre est de très grande taille, la violation d'accès arrête le service SQL Server. Le message d'erreur généré ressemble à celui-ci :
[Microsoft][Pilote ODBC SQL Server][DBMSLPCN]ConnectionCheckForData (CheckforData()).
Serveur : Msg 11, Niveau 16, État 1, Ligne 0
Erreur réseau générale. Consultez votre documentation réseau.
Résolution
Pour résoudre ce problème, procurez-vous le dernier Service Pack pour SQL Server 2000. Pour plus d'informations, consultez l'article suivant dans la Base de connaissances Microsoft :
290211 INF : Procédure d'obtention du dernier Service Pack pour SQL Server 2000
Statut
Microsoft a confirmé l'existence de ce problème dans SQL Server 2000. Ce problème a été corrigé dans le Service Pack 1 de SQL Server 2000.
Plus d'informations
Ce problème ne se produit que si la taille de la chaîne appelée par xp_enumgroups est supérieure à 228 octets. Le texte précis du message d'erreur peut varier en fonction de la taille de la chaîne passée.

Par exemple, si la chaîne est de 229 octets, le message d'erreur suivant s'affiche :
Serveur : Msg 3624, Niveau 20, État 1, Procédure xp_enumgroups, Ligne 1

Emplacement : dbccdll.cpp:516
Expression : pElem == Lookup (pElem->m_DLLName.m_str)
SPID : 51
ID du processus : 768

Connexion interrompue
Procédure pour reproduire le comportement

Vous pouvez procéder comme suit pour reproduire le problème :

  • Pour provoquer une violation d'accès, utilisez le code suivant :
    xp_enumgroups 'Analyse du répertoire [C:\*]Analyse du répertoire [C:\*]Analyse du répertoire [C:\APSETUP\*]Analyse du répertoire [C:\APSETUP\*]Analyse du répertoire [C:\APSETUP\*]Analyse du répertoire [C:\*]Analyse du répertoire [C:\cmdcons\*]Analyse du répertoire [C:\*]'
  • Pour provoquer une violation d'accès, ainsi que l'arrêt du service SQL Server, utilisez le code suivant :
    xp_enumgroups 'Analyse du répertoire [C:\*]Analyse du répertoire [C:\*]Analyse du répertoire [C:\APSETUP\*]Analyse du répertoire [C:\APSETUP\*]Analyse du répertoire [C:\APSETUP\*]Analyse du répertoire [C:\*]Analyse du répertoire [C:\cmdcons\*]Analyse du répertoire [C:\*]Analyse du répertoire [C:\*]Analyse du répertoire [C:\APSETUP\*]Analyse du répertoire [C:\APSETUP\*]Analyse du répertoire [C:\APSETUP\*]Analyse du répertoire [C:\APSETUP\*]Analyse du répertoire [C:\APSETUP\*]Analyse du répertoire [C:\APSETUP\*]Analyse du répertoire [C:\APSETUP\*]Analyse du répertoire [C:\APSETUP\*]Analyse du répertoire [C:\APSETUP\*]Analyse du répertoire [C:\*]Analyse du répertoire [C:\cmdcons\*]Analyse du répertoire [C:\*]'
Propriétés

ID d'article : 294338 - Dernière mise à jour : 01/16/2015 22:08:38 - Révision : 3.1

Microsoft SQL Server 2000 Standard

  • kbnosurvey kbarchive kbbug kbfix kbsqlserv2000bug kbsqlserv2000sp1fix KB294338
Commentaires
ERROR: at System.Diagnostics.Process.Kill() at Microsoft.Support.SEOInfrastructureService.PhantomJS.PhantomJSRunner.WaitForExit(Process process, Int32 waitTime, StringBuilder dataBuilder, Boolean isTotalProcessTimeout)