KB4316948 - CORREÇÃO: Violação de acesso quando você compila uma consulta e a alteração de histograma é habilitada com estimativa de cardinalidade padrão no SQL Server 2016 e 2017

Aplica-se A
SQL Server 2017 Developer SQL Server 2017 Enterprise SQL Server 2017 Enterprise Core SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use)

Sintomas

Tenha em conta o seguinte cenário:

  • Pode tentar executar uma consulta utilizando a Estimativa de Cardinalidade predefinida quando a alteração de histograma está ativada.
  • A consulta inclui expressões numa coluna utilizada num dos predicados.

Nesse cenário, ocorre uma violação de acesso. Além disso, recebe a seguinte mensagem de erro:

Nota

Msg 596, Nível 21, Estado 1, Número de Linha
Não é possível continuar a execução porque a sessão está no estado de matar.
Msg 0, Nível 20, Estado 0, Número de Linha
Ocorreu um erro grave no comando atual.  Os resultados, se houver, devem ser descartados.

         Observação A alteração do histograma pode ser ativada utilizando a opção de consulta USE HINT('ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS') ou o sinalizador de rastreio 4139.

Resolução

Esse problema foi corrigido nas seguintes atualizações para SQL Server:

Atualização cumulativa 8 para SQL Server 2017

Atualização cumulativa 5 para SQL Server 2016 Service Pack 2

Acerca de SQL Server compilações

Cada nova compilação para SQL Server contém todos os hotfixes e correções de segurança que estavam na compilação anterior. Recomendamos que instale a compilação mais recente para a sua versão do SQL Server:

A última compilação do SQL Server 2017

Atualização cumulativa mais recente para o SQL Server 2016

Estado

A Microsoft confirmou que se trata de um problema nos produtos Microsoft listados na secção "Aplica-se a".

Referências

DBCC TRACEON - Sinalizadores de rastreamento (Transact-SQL)

Saiba mais sobre a terminologia padrão que a Microsoft utiliza para descrever as atualizações de software.