terça-feira, 7 de julho de 2026

Systems Inside: Changing SQL Server Collation After Installation and in  Production

COLLATION no SQL Server


    Vamos lá, gostaria de falar um pouco sobre o que seria Collations e qual beneficions para evitar problemas entre ambientes de banco de dados devido a utilização de collations diferentes entre os servidores de banco de dados com SQL Server.
 

O que é Collation?

A Collation é o conjunto de regras que define como o SQL Server realiza:

  • Comparações de texto;
  • Ordenação de resultados;
  • Pesquisas e filtros;
  • Tratamento de caracteres especiais;
  • Sensibilidade a maiúsculas e minúsculas;
  • Sensibilidade a acentos;
  • Suporte para diferentes idiomas.

Em resumo, a Collation determina como o SQL Server interpreta e manipula dados textuais.

Entendendo a estrutura de uma Collation

Um exemplo bastante comum é:

Latin1_General_CI_AS 

Vamos decompor esse nome:

  • Latin1_General → Regras linguísticas para idiomas ocidentais.
  • CI → Case Insensitive.
  • AS → Accent Sensitive.
 Ou seja:
  • Não diferencia letras maiúsculas e minúsculas.
  • Diferencia caracteres acentuados.

Exemplo:
 
SELECT CASE WHEN 'SQL' = 'sql' THEN 'IGUAL' ELSE 'DIFERENTE' END

Resultado: IGUAL  

SELECT CASE WHEN 'José' = 'Jose' THEN 'IGUAL' ELSE 'DIFERENTE' END
 
Resultado: DIFERENTE

Sensibilidade a Maiúsculas e Minúsculas

CI – Case Insensitive

Ignora diferenças entre letras maiúsculas e minúsculas.

 
SELECT CASE WHEN 'Administrador' = 'administrador' THEN 'SIM' ELSE 'NÃO' END
 
Resultado: SIM 

CS – Case Sensitive

Diferencia maiúsculas de minúsculas.

SELECT CASE WHEN 'Administrador' <> 'administrador' THEN 'IGUAL' ELSE 'DIFERENTE' END

Resultado:  DIFERENTE

Sensibilidade a Acentos

AS – Accent Sensitive

Considera acentos durante comparações.

 SELECT CASE WHEN 'José' <> 'Jose' THEN 'IGUAL' ELSE 'DIFERENTE' END

Resultado: DIFERENTE

AI – Accent Insensitive

SELECT CASE WHEN 'José' <> 'Jose' THEN 'IGUAL' ELSE 'DIFERENTE' END

Resultado: IGUAL

Essa configuração é bastante utilizada em sistemas que precisam oferecer buscas mais flexíveis aos usuários.

O problema mais comum: Conflito de Collation

O famoso erro:
 
Cannot resolve the collation conflict between
'SQL_Latin1_General_CP1_CI_AS' and 'Latin1_General_CI_AS'
 
Isso ocorre quando o SQL Server tenta comparar informações que possuem regras de Collation diferentes.
 
Lembrando isto fazendo uma comparação com dois banco de dados.
 
Exemplo:
 
SELECT * FROM BancoA.dbo.Clientes A JOIN BancoB.dbo.Clientes B ON A.Nome = B.Nome;
 
Se os dois bancos utilizarem Collations distintas, o SQL Server não conseguirá determinar qual regra utilizar na comparação.
 

Como listar todas as Collations disponíveis

O SQL Server disponibiliza uma função para consultar todas as configurações suportadas.
 
SELECT * FROM fn_helpcollations();

Boas Práticas

Ao trabalhar com ambientes corporativos e integrações, algumas recomendações podem evitar muitos problemas:

✅ Padronize a mesma Collation em toda a instância sempre que possível.

✅ Utilize a mesma Collation entre bancos que possuem integração frequente.

✅ Evite alterar a Collation após a entrada do ambiente em produção, pois o processo pode ser complexo e impactar aplicações existentes.

Obrigado pela visita, espero ter ajudado a esclarecer algumas dúvidas e volte sempre!

 

Nenhum comentário:

Postar um comentário

 Copyright © 2008-2010 All Right Reserved - Todos os Direitos Reservados Elder Stroparo