Sintomas
Assuma que tem uma consulta que realiza algumas operações de cordas, por exemplo, concatenação, nas colunas CHAR ou VARCHAR no Microsoft SQL Server 2014, 2016 e 2017. Considere o seguinte cenário:
-
Você concatena colunas com diferentes colagens que lhes são atribuídas.
-
Estas colagens são incompatíveis umas com as outras. Por exemplo, tenta-se concatenar uma coluna que é coligida como Latin1_General_CI_AI com Latin1_General_BIN.
-
O resultado final da concatenação é atribuído a uma colagem específica (incluindo "database_default") como uma questão da resolução de conflitos de colagem.
Neste cenário, o SQL Server pode devolver um retalhista afirmando que afirma "Comparação inválida devido a NENHUMA COLLATION", e pode receber algumas mensagens de erro que se assemelham às seguintes:
Localização: typinfo.cpp:LineNumber Expressão: falsa SPID: SPID ID do processo: ProcessID Descrição: Comparação inválida devido a NENHUMA COLAGEM.
Msg 3624, Nível 20, Estado 1, LineNumber Uma verificação de afirmação do sistema falhou. Verifique o registo de erros do SQL Server para obter mais detalhes. Normalmente, uma falha de afirmação é causada por um bug de software ou corrupção de dados. Para verificar se existe corrupção na base de dados, considere executar o DBCC CHECKDB. Se concordar em enviar despejos para a Microsoft durante a configuração, será enviada uma mini lixeira para a Microsoft. Uma atualização pode estar disponível da Microsoft no mais recente Pack de Serviços ou num Hotfix de Suporte Técnico.
Msg 596, Nível 21, Estado 1, LineNumber Não posso continuar a execução porque a sessão está no estado de morte.
Msg 0, Nível 20, Estado 0, LineNumber
Ocorreu um erro grave no comando atual. Os resultados, se houver, devem ser descartados.
Causa
Durante a fase de otimização de consultas, o SQL Server tenta calcular cardeais em resultados intermédios de várias fases da consulta, por exemplo, a concatenação. Como a resolução de conflitos de colagem ocorre no final, o otimizador de consultas pode desconhecer-se e tentar realizar a computação da concatenação cardinalícia numa entrada com colagem conflituosa.
Resolução
Esta emissão é corrigida nas seguintes atualizações cumulativas para o SQL Server:
Atualização cumulativa 8 para SQL Server 2016 SP1
Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e todas as correções de segurança que foram incluídas com a atualização cumulativa anterior. Confira as últimas atualizações cumulativas do SQL Server:
Última atualização cumulativa para SQL Server 2016
Estado
A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".
Referências
Conheça a terminologiaque a Microsoft utiliza para descrever atualizações de software.