REVISIÓN: Infracción de acceso cuando se ejecuta un procedimiento almacenado que utiliza un cursor en una variable de tabla en SQL Server

IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.

Haga clic aquí para ver el artículo original (en inglés): 3138930
Síntomas
Suponga que crea un procedimiento almacenado que utiliza un cursor en una variable de tabla en Microsoft SQL Server 2012 o 2014 de SQL Server. Además, el procedimiento almacenado que actualiza la tabla utilizando una instrucciónWHERE CURRENT OF junto con el cursor.

Por ejemplo, el procedimiento almacenado sería similar al siguiente:
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 

Cuando se ejecuta el procedimiento almacenado mediante el sistema de sp_refreshsqlmodule procedimiento almacenado, puede producirse una infracción de acceso, y puede recibir mensajes de error similares a los siguientes:
Msg 596, nivel 21, estado 1Cannot continuar con la ejecución porque la sesión está en el estado de interrupción. Msj 0, nivel 20, estado 0A error grave en el comando actual. Los resultados, si los hay, deben descartarse.

En esta situación, errores similares a los siguientes también se escriben en los registros de errores de SQL Server:
fecha time.730 spid51 SqlDumpExceptionHandler: 51 proceso generó la excepción fatal c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server está finalizando este proceso.
date time.730 spid51 * *******************************************************************************
fecha spid51 time.730 *
fecha spid51 time.730 * comenzar el volcado de pila:
fecha spid51 time.730 * fecha tiempo spid 51
fecha spid51 time.730 *
fecha spid51 time.730 *
fecha spid51 time.730 * dirección de excepción = 00007FFC270236D5 Module(sqllang+00000000005036D5)
fecha spid51 time.730 * código de excepción = c0000005 EXCEPTION_ACCESS_VIOLATION
fecha spid51 time.730 * infracción de acceso al leer 0000006F00620074 de dirección
fecha spid51 time.730 * bytes de entrada búfer 136 -
fecha spid51 time.730 * EXECUTE sp_refreshsqlmodule N'[dbo]. [usp_TestSP]'
fecha spid51 time.730 *
fecha spid51 time.730 *

Solución

Información de actualización acumulativa

Este problema se corrigió en las siguientes actualizaciones:
Recomendación: Instale la actualización acumulativa más reciente para SQL Server

Cada nueva actualización acumulativa para SQL Server contiene todas las revisiones y todas las revisiones de la seguridad que se incluyeron en la actualización acumulativa anterior. Consulte las actualizaciones acumulativas más recientes para SQL Server:
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".
Referencias
Obtenga información acerca de la terminología que utiliza Microsoft para describir las actualizaciones de software.

Advertencia: este artículo se tradujo automáticamente

Propiedades

Id. de artículo: 3138930 - Última revisión: 05/31/2016 10:31:00 - Revisión: 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 KbMtes
Comentarios