CORRECTIF : Message d’erreur lorsque vous exécutez une fonction définie par l’utilisateur dans SQL Server 2005 : « le paramètre de longueur non valide passé à la fonction SUBSTRING » ou « une erreur de niveau transport s’est produite lors de la réception des résultats à partir du serveur »

S’applique à : Microsoft SQL Server 2005 Standard EditionMicrosoft SQL Server 2005 Developer EditionMicrosoft SQL Server 2005 Workgroup Edition

Bogue : 1209 (correctif SQL)
N° de bogue : 443526 (SQLBUDT)
Microsoft distribue les correctifs de Microsoft SQL Server 2005 en tant que fichier téléchargeable. Les correctifs étant cumulatifs, chaque nouvelle version contient tous les correctifs et correctifs de sécurité inclus dans la précédente de SQL Server 2005 version du correctif.
Cet article décrit les éléments suivants concernant cette version du correctif :
  • Les problèmes qui sont résolus par ce package de correctifs
  • Les conditions préalables à l’installation du package de correctifs
  • Savoir si vous devez redémarrer l’ordinateur après avoir installé le package de correctifs
  • Savoir si le correctif logiciel est remplacé par un autre package de correctif logiciel
  • Savoir si vous devez modifier le Registre
  • Les fichiers qui sont contenus dans le package de correctifs

Symptômes


Lorsque vous exécutez une fonction définie par l’utilisateur dans SQL Server 2005, vous recevez un message d’erreur. Ce problème se produit si vous exécutez l’instruction suivante avant d’exécuter la fonction définie par l’utilisateur :
SET FMTONLY ON
Vous recevez un message d’erreur différent, selon la version de SQL Server 2005 que vous avez installée. Si vous utilisez SQL Server 2005 Service Pack 1 (SP1), vous pouvez également rencontrer d’autres problèmes.

La version d’origine de SQL Server 2005

Lorsque vous exécutez la fonction définie par l’utilisateur dans la version d’origine de SQL Server 2005, le message d’erreur suivant s’affiche.
Msg 536, niveau 16, état 5, ligne 4
Paramètre de longueur non valide passé à la fonction SUBSTRING.

SQL Server 2005 SP1

Lorsque vous exécutez la fonction définie par l’utilisateur dans SQL Server 2005 SP1, vous rencontrez les problèmes suivants :
  • Le message d'erreur suivant s'affiche :
    Msg 109, niveau 20, état 0, ligne 0
    Une erreur de niveau transport s’est produite lors de la réception des résultats à partir du serveur. (fournisseur : le fournisseur de mémoire, erreur partagés : 0 - le canal a été terminé.)
  • Le service SQL Server s’arrête.
  • La violation d’accès suivant est enregistrée dans le fichier journal des erreurs SQL Server :
    SqlDumpExceptionHandler : Le processus 53 a généré une exception fatale c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.

Résolution


Informations sur le service pack

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

Informations sur le correctif

Un correctif pris en charge est disponible auprès de Microsoft. Toutefois, ce correctif vise à corriger uniquement le problème décrit dans cet article. Appliquez ce correctif uniquement aux systèmes rencontrant ce problème spécifique. Ce correctif va peut-être subir des tests supplémentaires. Par conséquent, si vous n'êtes pas sérieusement concerné par ce problème, nous vous recommandons d'attendre la prochaine mise à jour logicielle qui contiendra ce correctif.

Si le correctif est disponible pour le téléchargement, il existe une section « Téléchargement de correctif logiciel disponible » au début de cet article de la Base de connaissances. Si cette section n'apparaît pas, contactez le Service clientèle et Support de Microsoft pour obtenir le correctif.

Remarque Si des problèmes supplémentaires se produisent ou si des procédures de dépannage sont nécessaires, vous devrez peut-être formuler une demande de service distincte. Les coûts habituels du support technique s'appliqueront aux questions et problèmes qui ne relèvent pas de ce correctif logiciel. Pour une liste complète des numéros de téléphone service clientèle de Microsoft ou pour créer une demande de service distincte, visitez le site Web de Microsoft à l’adresse suivante :Remarque Le formulaire « Téléchargement de correctif logiciel disponible » affiche les langues pour lesquelles le correctif est disponible. Si vous ne voyez pas votre langue, c'est parce qu'il n'y a pas de correctif disponible pour cette langue.

Conditions préalables

Vous devez disposer de SQL Server 2005 Service Pack 1 (SP1) pour appliquer ce correctif.

Pour plus d’informations sur la façon d’obtenir SQL Server 2005 Service Pack 1, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :

913089 comment obtenir le dernier service pack pour SQL Server 2005

Informations sur le redémarrage

Vous devez redémarrer le service SQL Server après avoir appliqué ce correctif.

Informations concernant le Registre

Vous n’êtes pas obligé de modifier le Registre.

Informations sur les fichiers de correctif logiciel

Ce correctif contient uniquement les fichiers qui sont nécessaires pour corriger les problèmes décrits dans cet article. Ce correctif peut ne pas contienne tous les fichiers nécessaires à la mise à jour complète d’un produit vers la dernière version.

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 répertoriées en temps universel coordonné (UTC). Lorsque vous affichez les informations de fichier, elles sont converties en heure locale. Pour trouver la différence entre l’UTC et l’heure locale, utilisez l’onglet fuseau horaire dans l’élément de Date et d’heure dans le panneau de configuration.
Nom de fichierVersion de fichierTaille du fichierDateHeurePlateforme
Hauresourcedb.ldfNe s'applique pas524 28817-Aug-200610:39Ne s'applique pas
Hauresourcedb.mdfNe s'applique pas39,911,42417-Aug-200610:39Ne s'applique pas
Logread.exe2005.90.2183.0398,11217-Aug-200614:13x86
Microsoft.analysisservices.adomdclient.dll9.0.2183.0543,52017-Aug-200614:13x86
Microsoft.analysisservices.deployengine.dll9.0.2183.0138,01617-Aug-200614:12x86
Microsoft.analysisservices.dll9.0.2183.01,215,26417-Aug-200614:13x86
Microsoft.sqlserver.mgdsqldumper.dll2005.90.2183.075,55217-Aug-200614:11x86
Microsoft.sqlserver.sqlenum.dll9.0.2183.0908,06417-Aug-200614:13x86
Msgprox.dll2005.90.2183.0197,92017-Aug-200614:11x86
Msmdlocal.dll9.0.2183.015,703,84017-Aug-200614:13x86
Msmdredir.dll9.0.2183.03,968,80017-Aug-200614:14x86
Replprov.dll2005.90.2183.0547,61617-Aug-200614:13x86
Replrec.dll2005.90.2183.0782,11217-Aug-200614:12x86
Sqlaccess.dll2005.90.2183.0347,93617-Aug-200614:13x86
Sqlagent90.exe2005.90.2183.0319,26417-Aug-200614:12x86
Sqlservr.exe2005.90.2183.028,959,06417-Aug-200614:13x86
Sysdbupg.sqlNe s'applique pas192,34619-Jul-200609:02Ne s'applique pas
Template_hauresourcedb.ldfNe s'applique pas524 28817-Aug-200610:39Ne s'applique pas
Template_hauresourcedb.mdfNe s'applique pas39,911,42417-Aug-200610:39Ne s'applique pas
Xpstar90.dll2005.90.2183.0292,64017-Aug-200614:16x86
Xpstar90.rll2005.90.2183.0152,86417-Aug-200614:12Ne s'applique pas

Solution de contournement


Pour contourner ce problème, modifiez le paramètre SET FMTONLY OFF avant d’exécuter la fonction définie par l’utilisateur.

État


Microsoft a confirmé qu’il s’agit d’un problème dans les produits Microsoft répertoriés dans la section « S’applique à ». Ce problème a été corrigé dans SQL Server 2005 Service Pack 2.

Plus d'informations


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 :

Packages de mises à jour 822499 nouveau schéma d’appellation pour les logiciels de Microsoft SQL Server

Pour plus d'informations sur la terminologie de mise à jour logicielle, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :

Description 824684 terminologie standard utilisée pour décrire les mises à jour logicielles de Microsoft

Informations de vidage de pile

Vous recevez les informations de vidage de pile suivant dans SQL Server 2005 SP1 :
2006-08-16 19:30:37.61 spid54      * Short Stack Dump
2006-08-16 19:30:37.62 spid54 014718DE Module(sqlservr+004718DE)
2006-08-16 19:30:37.62 spid54 0108B032 Module(sqlservr+0008B032)
2006-08-16 19:30:37.62 spid54 0108B066 Module(sqlservr+0008B066)
2006-08-16 19:30:37.62 spid54 014680F2 Module(sqlservr+004680F2)
2006-08-16 19:30:37.62 spid54 01BDF9D2 Module(sqlservr+00BDF9D2)
2006-08-16 19:30:37.62 spid54 014688D5 Module(sqlservr+004688D5)
2006-08-16 19:30:37.62 spid54 01023E34 Module(sqlservr+00023E34)
2006-08-16 19:30:37.62 spid54 0136764A Module(sqlservr+0036764A)
2006-08-16 19:30:37.62 spid54 013674C1 Module(sqlservr+003674C1)
2006-08-16 19:30:37.62 spid54 01367356 Module(sqlservr+00367356)
2006-08-16 19:30:37.62 spid54 01BF2102 Module(sqlservr+00BF2102)
2006-08-16 19:30:37.62 spid54 01381DA5 Module(sqlservr+00381DA5)
2006-08-16 19:30:37.62 spid54 01023E34 Module(sqlservr+00023E34)
2006-08-16 19:30:37.62 spid54 01041DD5 Module(sqlservr+00041DD5)
2006-08-16 19:30:37.62 spid54 0103DFD4 Module(sqlservr+0003DFD4)
2006-08-16 19:30:37.62 spid54 01006A96 Module(sqlservr+00006A96)
2006-08-16 19:30:37.62 spid54 01006BBC Module(sqlservr+00006BBC)
2006-08-16 19:30:37.62 spid54 01006DAB Module(sqlservr+00006DAB)
2006-08-16 19:30:37.62 spid54 01447562 Module(sqlservr+00447562)
2006-08-16 19:30:37.62 spid54 0144859B Module(sqlservr+0044859B)
2006-08-16 19:30:37.62 spid54 0144789A Module(sqlservr+0044789A)
2006-08-16 19:30:37.64 spid54 01447720 Module(sqlservr+00447720)
2006-08-16 19:30:37.64 spid54 781329AA Module(MSVCR80+000029AA)
2006-08-16 19:30:37.65 spid54 78132A36 Module(MSVCR80+00002A36)

sqlservr!CMsqlXactImp::ClearAllUpdateSequenceMarkers+0x3b (CONV: thiscall)
sqlservr!CMsqlXactImp::RollbackInternal+0x3a (CONV: thiscall)
sqlservr!CMsqlXactImp::Rollback+0x31 (CONV: thiscall)
sqlservr!CAutoMsqlXact::RollbackNestedXact+0x1b (FPO: [0,0,0]) (CONV: thiscall)
sqlservr!CExecuteStatement::RollbackNestedXact+0x14 (FPO: [1,0,0]) (CONV: thiscall)
sqlservr!CExecuteStatement::FinishNormalImp+0x8c (CONV: thiscall)
sqlservr!CExecuteStatement::FinishOnExceptionImp+0x13 (CONV: thiscall)
sqlservr!CMsqlExecContext::FExecute+0x65c (CONV: thiscall)
sqlservr!CSQLSource::Execute+0x73b (CONV: thiscall)
sqlservr!process_request+0x2e3 (CONV: stdcall)
sqlservr!process_commands+0x2e0 (CONV: stdcall)
sqlservr!SOS_Task::Param::Execute+0xe2 (CONV: thiscall)
sqlservr!SOS_Scheduler::RunTask+0xb9 (CONV: thiscall)
sqlservr!SOS_Scheduler::ProcessTasks+0x141 (CONV: stdcall)
sqlservr!SchedulerManager::WorkerEntryPoint+0x1a8 (CONV: stdcall)
sqlservr!SystemThread::RunWorker+0x7f (CONV: thiscall)
sqlservr!SystemThreadDispatcher::ProcessWorker+0x225 (CONV: thiscall)
sqlservr!SchedulerManager::ThreadEntryPoint+0x143 (CONV: stdcall)
msvcr80!_callthreadstartex+0x1b (FPO: [Non-Fpo]) (CONV: cdecl)
msvcr80!_threadstartex+0x66 (FPO: [Non-Fpo]) (CONV: stdcall)