Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Collations SQL Server #2

Boa tarde pessoa,

Estou tendo a mesma dificuldade do tópico acima. Estou executando a dica dada pelo professor Villa, porém, não estou obtendo bons resultados. Mesmo após alterar o COLLATION para quem as duas bases fiquem iguais, o erro persiste: Msg 468, Level 16, State 9, Line 35 Cannot resolve the collation conflict between 'Latin1_General_CI_AS" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation'.

Alguém teve essa mesma situação e conseguiu resolver?

Agradeço a atenção de todos.

5 respostas

Olá Lucas, tudo bem? Poderia indicar o link do tópico que tem o mesmo erro? Poderia também informar a query que você está tentando executar pra gente poder indicar uma solução. Porque esse é um erro que vem da criação do banco de dados, no momento da criação do banco de dados, então fala pra gente mais detalhes pra gente tentar indicar uma solução!

Bom dia Jonilson,

Obrigado pela resposta rápida. O tópico ao qual me referi que contém o mesmo erro: https://cursos.alura.com.br/forum/topico-collations-sql-server-71544

A query que estou tentando executar: SELECT * FROM [TABELA DE PRODUTOS]A INNER JOIN [SUCOS_VENDAS].[DBO].[TABELA DE PRODUTOS]B ON A.[CÓDIGO DO PRODUTO] = B.[CODIGO DO PRODUTO]

Conforme o tópico anterior, fui nas propriedades da DB e na opções fiz a alteração do Collation. Configurei os dois para trabalhar com Latin_General_CI_AS, e também fiz a tentativa dos dois trabalharem com o SQL_Latin1_General_CP1_CI_AS. Para garantir, cheguei até reiniciar o computador antes de tentar executar a query novamente. Porém continuo recebendo o retorno do erro: Cannot resolve the collation conflict between "Latin1_General_CI_AS" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation..

Novamente, agradeço a atenção. Caso haja mais alguma informação relevante para resolver o caso, por favor não hesite em solicitar.

Atenciosamente.

solução!

Agora entendi, mas você qual o collation das duas tabelas? Se sim, você então igualar o collation das duas passando o parâmetro COLLATE na comparação do JOIN da seguinte forma:

SELECT * FROM [TABELA DE PRODUTOS]A INNER JOIN [SUCOS_VENDAS].[DBO].[TABELA DE PRODUTOS] B ON A.[CÓDIGO DO PRODUTO] COLLATE SQL_Latin1_General_CP1_CI_AS = B.[CODIGO DO PRODUTO]

Fala pra gente o resultado!

Boa tarde Jonilson.

Funcionou utilizar a query dessa forma! Muito obrigado pela solução. Aproveitando seu conhecimento, existe alguma explicação para o não funcionamento da alteração do collate da tabela?

Agradeço sua ajuda!

Na verdade, o grande problema em fazer isso ( alteração do collate da tabela), é que consultas anteriores podem não funcionar corretamente, e também alterar o collate de uma tabela com muitos dados pode corromper os mesmos. O melhor é fazer dessa forma, mudando o collate na própria consulta.