Symptômes
Supposez 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. Par ailleurs, la procédure stockée met à jour la table à l’aide d’une instruction Where Current de conjointement avec le curseur. Par exemple, votre procédure stockée peut ressembler à ce qui suit :
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
Lors de l’exécution de la procédure stockée à l’aide de la procédure stockée système sp_refreshsqlmodule , il est possible qu’il y ait une violation d’accès et que vous receviez des messages d’erreur similaires à ce qui suit :
MSG 596, niveau 21, état 1Cannot continuer l’exécution, car la session est en état d’arrêt. MSG 0, niveau 20, état 0A erreur sérieuse s’est produit dans la commande actuelle. Les résultats éventuels doivent être supprimés.
Dans ce cas, des erreurs similaires à ce qui suit sont également inscrites dans les journaux des erreurs SQL Server :
Date Time. 730 spid51 SqlDumpExceptionHandler : le processus 51 a généré une exception irrécupérable c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.date time.730 spid51 * *******************************************************************************date time.730 spid51 *date time.730 spid51 * BEGIN STACK DUMP:date time.730 spid51 * date time spid 51date time.730 spid51 *date time.730 spid51 *date time.730 spid51 * Exception Address = 00007FFC270236D5 Module(sqllang+00000000005036D5)date time.730 spid51 * Exception Code = c0000005 EXCEPTION_ACCESS_VIOLATIONdate time.730 spid51 * Access Violation occurred reading address 0000006F00620074date time.730 spid51 * Input Buffer 136 bytes -date time.730 spid51 * EXECUTE sp_refreshsqlmodule N'[dbo]. [usp_TestSP] 'Date Time. 730 spid51 * Date Time. 730 spid51 *
Résolution
Informations sur les mises à jour cumulatives
Ce problème a été résolu dans les mises à jour suivantes :
-
Mise à jour cumulative 13 pour SQL Server 2014
-
Mise à jour cumulative 6 pour SQL Server 2014 Service Pack 1 (SP1)
-
Mise à jour cumulative 2 pour SQL Server 2012 Service Pack 3 (SP3)
-
Mise à jour cumulative 11 pour SQL Server 2012 Service Pack 2 (SP2)
Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs et les correctifs de sécurité inclus dans la mise à jour cumulative précédente. Consultez les dernières mises à jour cumulatives pour SQL Server :
Statut
Microsoft a confirmé l'existence de ce problème dans les produits Microsoft figurant dans la liste des produits concernés par cet article.
Références
Apprenez-en davantage sur la terminologie utilisée par Microsoft pour décrire les mises à jour logicielles.