Sintomas
Suponha que você crie um procedimento armazenado que usa um cursor em uma variável de tabela no Microsoft SQL Server 2012 ou no SQL Server 2014. Além disso, o procedimento armazenado atualiza a tabela usando um ponto em que o atual da instrução juntamente com o cursor. Por exemplo, seu procedimento armazenado pode se parecer com o seguinte:
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 você executa o procedimento armazenado usando o procedimento armazenado do sistema sp_refreshsqlmodule , pode ocorrer uma violação de acesso, e você pode receber mensagens de erro semelhantes às seguintes:
MSG 596, nível 21, State 1Cannot continuar a execução porque a sessão está no estado Kill. MSG 0, nível 20, estado 0A grave ocorreu um erro grave no comando atual. Os resultados, se houver, devem ser descartados.
Nessa situação, os erros semelhantes aos seguintes também são gravados nos logs de erro do SQL Server:
data e hora. 730 spid51 SqlDumpExceptionHandler: processo 51 gerado exceção fatal 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] ' data hora. 730 spid51 * data hora. 730 spid51 *
Resolução
Informações sobre a atualização cumulativa
Este problema foi corrigido nas seguintes atualizações:
-
Atualização cumulativa 13 para SQL Server 2014
-
Atualização cumulativa 6 para SQL Server 2014 Service Pack 1 (SP1)
-
Atualização cumulativa 2 para SQL Server 2012 Service Pack 3 (SP3)
-
Atualização cumulativa 11 para SQL Server 2012 Service Pack 2 (SP2)
Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e todas as correções de segurança incluídas na atualização cumulativa anterior. Confira as atualizações cumulativas mais recentes do SQL Server:
Status
A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".
Referências
Saiba mais sobre a terminologia que a Microsoft usa para descrever atualizações de software.