CORRECTIF : Violation d’accès lorsque vous exécutez une procédure stockée qui utilise un curseur sur une variable de table dans SQL Server

IMPORTANT : Cet article est issu d'une traduction automatique réalisée par un logiciel Microsoft et non par un traducteur professionnel. Cette traduction automatique a pu aussi être révisée par la communauté Microsoft grâce à la technologie Community Translation Framework (CTF). Pour en savoir plus sur cette technologie, veuillez consulter la page http://support.microsoft.com/gp/machine-translation-corrections/fr. Microsoft vous propose en effet des articles traduits par des professionnels, des articles issus de traductions automatiques et des articles issus de traductions automatiques révisées par la communauté Microsoft, de manière à ce que vous ayez accès à tous les articles de notre Base de connaissances dans votre langue. Il est important de noter que les articles issus de la traduction automatique, y compris ceux révisés par la communauté Microsoft, peuvent contenir des erreurs de vocabulaire, de syntaxe ou de grammaire. Microsoft ne pourra être tenu responsable des imprécisions, erreurs, ainsi que de tout dommage résultant d’une traduction incorrecte du contenu ou de son utilisation par les clients.

La version anglaise de cet article est la suivante: 3138930
Symptômes
Supposons que vous créez une procédure stockée qui utilise un curseur sur une variable de table dans Microsoft SQL Server 2012 ou SQL Server 2014. En outre, la procédure stockée met à jour la table à l’aide d’une instructionWHERE CURRENT OF avec le curseur.

Par exemple, la procédure stockée peut ressembler au suivant :
CREATE PROCEDURE dbo.usp_TestSP AS  BEGIN  DECLARE @TableVar TABLE (SomeInt INT NULL) INSERT @TableVar VALUES (NULL)  DECLARE @curInt INT, @newInt INT SET @newInt = 1  DECLARE ccc CURSOR LOCAL FOR SELECT SomeInt FROM @TableVar WHERE SomeInt IS NULL  OPEN ccc  FETCH NEXT FROM ccc INTO @curInt UPDATE @TableVar SET SomeInt = @newInt WHERE CURRENT OF cccCLOSE ccc  SELECT * FROM @TableVar END 

Lorsque vous exécutez la procédure stockée à l’aide du système de sp_refreshsqlmodule une procédure stockée, une violation d’accès peut se produire, et vous pouvez recevoir des messages d’erreur semblables aux suivants :
Msg 596, niveau 21, état 1Cannot poursuivre l’exécution car la session est dans un état d’arrêt. Msg 0, niveau 20, état 0 a grave erreur sur la commande en cours. Les résultats, le cas échéant, doivent être ignorés.

Dans ce cas, les erreurs semblables aux suivantes sont également écrits dans le journal des erreurs SQL Server :
date time.730 spid51 SqlDumpExceptionHandler : processus 51 a généré une exception fatale c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.
date time.730 spid51 * *******************************************************************************
date time.730 spid51 *
date time.730 spid51 * commencer le vidage de pile :
date time.730 spid51 * date heure spid 51
date time.730 spid51 *
date time.730 spid51 *
date time.730 spid51 * adresse d’Exception = 00007FFC270236D5 Module(sqllang+00000000005036D5)
date time.730 spid51 * Code d’Exception = c0000005 EXCEPTION_ACCESS_VIOLATION
date time.730 spid51 * Violation d’accès s’est produite lors de la lecture de 0000006F00620074 d’adresse
date time.730 spid51 * octets de 136 du tampon d’entrée :
date time.730 spid51 * EXECUTE sp_refreshsqlmodule N'[dbo]. [usp_TestSP]'
date time.730 spid51 *
date time.730 spid51 *

Résolution

Informations de mise à jour cumulative

Ce problème est résolu dans les mises à jour suivantes :
Recommandation : Installez la mise à jour cumulative la plus récente pour SQL Server

Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs logiciels et des correctifs de sécurité qui ont été inclus dans la précédente mise à jour cumulative. Découvrez les dernières mises à jour cumulatives pour SQL Server :
Statut
Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés dans la section « S'applique à ».
Références
En savoir plus sur la terminologie que Microsoft utilise pour décrire les mises à jour logicielles.

Avertissement : Cet article a été traduit automatiquement.

Propriétés

ID d'article : 3138930 - Dernière mise à jour : 05/31/2016 10:28:00 - Révision : 3.0

Microsoft SQL Server 2012 Service Pack 3, Microsoft SQL Server 2012 Service Pack 2, Microsoft SQL Server 2014 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard

  • kbqfe kbfix kbexpertiseinter kbsurveynew kbmt KB3138930 KbMtfr
Commentaires