Sintomas
Um erro de asserção pode ocorrer quando o Microsoft SQL Server executa repetidamente um procedimento armazenado que executa o seguinte:
- Usa um objeto grande, como varchar(max) ou varbinary(max), como argumento, e
- Cria uma tabela temporária com escopo para a execução do procedimento e
- Usa o argumento objeto grande na tabela temporária.
Você pode encontrar o erro de asserção semelhante ao seguinte no log de erros do SQL Server:
SPID de Data/Hora Erro: 17065, Gravidade: 16, Estado: 1.
SPID Data/Hora Asserção do SQL Server: Arquivo: FilePath\FileName, line = LineNumber Falha na declaração = 'fFalse' Tentativa de acessar o identificador de blob expirado (1). Esse erro pode estar relacionado ao tempo. Se o erro persistir após a execução da instrução, use DBCC CHECKDB para marcar a integridade estrutural do banco de dados ou reinicie o servidor para garantir que as estruturas de dados na memória não sejam corrompidas.
SPID de Data/Hora Erro: 3624, Gravidade: 20, Estado: 1.
SPID de Data/Hora Uma verificação de marca de asserção do sistema falhou. Verifique o log de erros do SQL Server para obter detalhes. Normalmente, uma falha de declaração é causada por um bug de software ou corrupção de dados. Para marcar se há banco de dados corrompido, considere executar DBCC CHECKDB. Se você concordou em enviar despejos para a Microsoft durante a instalação, um minidespejo será enviado para a Microsoft. Uma atualização pode estar disponível da Microsoft no Service Pack mais recente ou em um hotfix do Suporte Técnico.
Causa
O SQL Server tem lógica interna para desabilitar o cache de consultas que fazem referência a objetos grandes para que as execuções subsequentes não façam referência a esses LOBs (que foram criados durante execuções anteriores e, portanto, são inválidos para execuções subsequentes). Essa lógica não lidou com o caso de DNR (Resolução de Nome Adiado ) em tabelas temporárias que causaram esses planos A criação de tabelas temporárias com escopo é cara, e o SQL Server as armazena em cache para reutilização em execuções subsequentes. Isso impede a recompilação dessas consultas devido a alterações de esquema.
Saiba mais sobre a Resolução de Nome Adiado.
Resolução
Esse problema é corrigido nas seguintes atualizações cumulativas para o SQL Server:
Atualização cumulativa 8 para o SQL Server 2016 SP1
Atualização cumulativa 4 para o SQL Server 2017
Atualização cumulativa 10 para o SQL Server 2014 Service Pack 2
Sobre atualizações cumulativas para o SQL Server
Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e correções de segurança que estavam no build anterior. Confira a atualização cumulativa mais recente do SQL Server:
Atualização cumulativa mais recente do SQL Server 2016
Atualização cumulativa mais recente do SQL Server 2017
atualizações cumulativas mais recentes do SQL Server 2014
Status
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".
Referências
Saiba mais sobre a terminologia que a Microsoft usa para descrever atualizações de software.