Sintomas
Suponha que você tenha uma consulta que execute algumas operações de cadeia de caracteres, por exemplo, concatenação, em colunas CHAR ou VARCHAR no Microsoft SQL Server 2014, 2016 e 2017. Considere o seguinte cenário:
- Você concatena colunas com diferentes agrupamentos atribuídos a elas.
- Esses agrupamentos são incompatíveis entre si. Por exemplo, você tenta concatenar uma coluna que é agrupada como Latin1_General_CI_AI com Latin1_General_BIN.
- O resultado final da concatenação é atribuído a uma ordenação específica (incluindo "database_default") como uma questão de resolução de conflitos de ordenação.
Nesse cenário, o SQL Server pode retornar uma declaração de varejo que declara "Comparação inválida devido a NENHUMA ORDENAÇÃO" e você pode receber algumas mensagens de erro semelhantes às seguintes:
Observação
Localização: typinfo.cpp:LineNumber
Expressão: false
SPID: SPID
ID do processo: ProcessID
Descrição: comparação inválida devido a NENHUMA ORDENAÇÃO.Msg 3624, Nível 20, Estado 1, Linha LineNumber
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.Msg 596, Nível 21, Estado 1, Linha LineNumber
Não é possível continuar a execução porque a sessão está no estado de encerramento.Msg 0, Nível 20, Estado 0, Line LineNumber
Ocorreu um erro grave no comando atual. Os resultados, se houver, devem ser descartados.
Causa
Durante o estágio de otimização da consulta, o SQL Server tenta calcular cardinalidades em resultados intermediários de vários estágios da consulta, por exemplo, a concatenação. Como a resolução de conflitos de ordenação ocorre no final, o otimizador de consulta pode não estar ciente disso e tenta executar o cálculo da cardinalidade de concatenação em uma entrada com ordenação conflitante.
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 9 para o SQL Server 2014 SP2
Sobre atualizações cumulativas para o SQL Server:
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 para o SQL Server:
Atualização cumulativa mais recente do SQL Server 2016
Atualização cumulativa mais recente do SQL Server 2017
Atualização cumulativa mais recente 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.