Sintomas
Executar uma consulta SQL que contém uma instrução IF existe no Microsoft SQL Server 2012. Se a instrução IF existe contém a função de gestão dinâmica sys.dm_db_index_physical_stats, recebe uma violação de acesso semelhante à seguinte:
data time spid # * *******************************************************************************datatempo spid # *datatempo spid # * começar a copiar de pilha:datatempo spid # * data hora spid #datatempo spid # *datatempo spid # *datatempo spid # * endereço de excepção = 000007FF7DA5614B Module(sqlmin+000000000000614B)datatempo spid # * código de excepção = c0000005 EXCEPTION_ACCESS_VIOLATIONdatatempo spid # * violação de acesso ao ler o endereço 0000000800000F04datatempo spid # * bytes de entrada da memória intermédia 510 -datatempo spid # * SQL_query_codedatatempo spid # * final
Notas
-
Se executar o comando DBCC CHECKDB contra essa base de dados depois de ocorre a violação de acesso, é comunicado qualquer erro.
-
A violação de acesso ocorre quando a consulta SQL for executada pela primeira vez. No entanto, a violação de acesso ocorre sempre que executar a consulta SQL depois.
-
Se activar o sinalizador de rastreio 3654, a violação de acesso não ocorre. No entanto, recebe o seguinte erro no rastreio em vez disso:
Localização: sosmemdbg.cpp:2074Expressão: FalsoSPID: 55ID do processo: 16972Descrição: MEMOBJ_INDEXANALYSIS - detectados de memória não libertada.Msg 3624, 20 de nível de estado 1, linha 5Falhou uma verificação de asserção do sistema. Verifique o registo de erros do SQL Server para obter detalhes. Normalmente, uma falha de asserção é causada por uma corrupção de dados ou erros de software. Para verificar a existência de danos da base de dados, considere executar DBCC CHECKDB. Se acordado enviar informações de estado para a Microsoft durante a configuração, uma pequena cópia será enviada à Microsoft. Uma actualização poderão ficar disponível da Microsoft no Service Pack mais recente ou num QFE do suporte técnico.Msg 0, 20, o estado 0, 0 de linha de nívelOcorreu um erro grave no comando actual. Os resultados, se for caso disso, devem ser eliminados.
Resolução
Para resolver este problema, instale a actualização cumulativa 7 para o SQL Server SP1 de 2012. Este problema foi primeiro corrigido nesta actualização cumulativa.
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. Para mais informações, consulte a actualização cumulativa mais recente para o SQL Server SP1 de 2012.
Estado
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".
Referências
Consulte a terminologia Microsoft utiliza para descrever actualizações de software.