CORRECÇÃO: Violação de acesso quando executa um procedimento armazenado que utiliza um cursor sobre uma variável da tabela no SQL Server

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 3138930
Sintomas
Suponha que crie um procedimento armazenado que utiliza um cursor sobre uma variável da tabela de 2012 do Microsoft SQL Server ou SQL Server 2014. Além disso, o procedimento armazenado actualiza a tabela utilizando uma instruçãoOnde actual de juntamente com o cursor.

Por exemplo, o procedimento armazenado semelhantes às seguintes:
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 

Quando executa o procedimento armazenado utilizando o sistema sp_refreshsqlmodule procedimento armazenado, poderá ocorrer uma violação de acesso, e poderá receber mensagens de erro semelhantes à seguinte:
Msg 596, nível de 21 de 1Cannot de estado continuar a execução porque a sessão está no Estado kill. Msg 0, 20 de nível de erro grave do Estado 0A ocorreu no comando actual. Os resultados, se for caso disso, devem ser eliminados.

Nesta situação, erros semelhantes aos seguintes também são escritos os registos de erros do SQL Server:
Data time.730 spid51 SqlDumpExceptionHandler: 51 do processo gerado excepção fatal c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server está a terminar este processo.
date time.730 spid51 * *******************************************************************************
Data spid51 de time.730 *
Data spid51 de time.730 * começar a copiar de pilha:
Data spid51 de time.730 * data hora spid 51
Data spid51 de time.730 *
Data spid51 de time.730 *
Data spid51 de time.730 * endereço de excepção = 00007FFC270236D5 Module(sqllang+00000000005036D5)
Data spid51 de time.730 * código de excepção = c0000005 EXCEPTION_ACCESS_VIOLATION
Data spid51 de time.730 * violação de acesso ao ler o endereço 0000006F00620074
Data spid51 de time.730 * bytes de entrada da memória intermédia 136 -
Data spid51 de time.730 * sp_refreshsqlmodule de execução N» [dbo]. [usp_TestSP]'
Data spid51 de time.730 *
Data spid51 de time.730 *

Resolução

Informações de actualização cumulativa

Este problema foi corrigido nas seguintes actualizações:
Recomendação: Instale a actualização cumulativa mais recente para o SQL Server

Cada nova actualização cumulativa para o SQL Server contém todas as correcções e todas as correcções de segurança que foram incluídas na anterior actualização cumulativa. Verifique as actualizações cumulativas mais recentes para o SQL Server:
Ponto Da Situação
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".
Referências
Obter informações sobre o terminologia que a Microsoft utiliza para descrever atualizações de software.

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 3138930 - Última Revisão: 05/31/2016 09:26:00 - Revisão: 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 KbMtpt
Comentários