Tempo aproximado para leitura: 00:02:00 min
Ocorrência
Estou fazendo uma query em uma customização utilizando dois bancos com colações (collations) diferentes, e ao executar o comando é gerado o seguinte erro:
Cannot resolve the collation conflict between "Latin1_General_BIN" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation.
Ambiente
Cross Segmentos - Backoffice (Linha Protheus) – ADVPL – A partir da versão 11.8
Causa
Este erro ocorre quando são utilizados bancos com colações diferentes (construídos com configurações diferentes) para efetuar um instrução de junção (join).
A colação é a codificação de caracteres existente no banco de dados (semelhante ao encoding).
Solução
Verificar se a empresa fabricante do banco de dados disponibiliza alguma função de conversão de colação.
Exemplo
SELECT
SB1.B1_COD, SB1.B1_DESC,
SB1.B1_TIPO, SB5.B5_CEME
FROM
SB1990 AS SB1
LEFT JOIN
SB5990 AS SB5
ON SB1.B1_COD COLLATE Latin1_General_CI_AI = SB5.B5_COD COLLATE Latin1_General_CI_AI
ORDER BY
SB1.R_E_C_N_O_ DESC;
GO
0 Comentários