[DICA SQL] Alterar o Collation Default de uma Instância de Servidor (SQL Server)

Publicado: 18/07/2012 em Bases de Dados, C#, Certificações, Programação, Segurança da Informação, Sistemas Operacionais, Softwares, SQL, Truques & Dicas, Tutoriais / Info, Visual Studio
Tags:, , ,

Dica

Suponha que você precise pesquisar pelo no banco de dados um nome exatamente como ele foi inserido, vamos supor que seja aaaA, mas no seu banco de dados você já tem os valores AAAA, aaaa, AaaA e aaaA, a query abaixo retornará 4 linhas como resultado:

1 SELECT FROM tabela WHERE coluna = 'aaaA'

Para fazer o uso de case sensitive nessa coluna basta adicionar o collation como abaixo:

1 SELECT FROM tabela WHERE coluna COLLATE Latin1_General_CS_AS = 'aaaA'

Esse collation faz com que a busca seja feita com uso de case sensitive

Para alterar o collation da tabela definitivamente basta alterar a tabela da seguinte maneira:

1 ALTER TABLE tabela
2 ALTER COLUMN coluna CHAR(4) COLLATE Latin1_General_CS_AS

Para saber o collation de uma tabela na base de dados para executar o comando abaixo, no segundo resultset você terá o collation

1 SP_HELP tabela

FORMA 2:

Para alterar o Collation Default de uma Instância do Servidor (ATENÇÃO: Collation de Instância de Servidor não pode ser confundida com Collation de Banco de Dados)

1. 
Pare o serviço MSSQLServer da Instancia do SQLServer que você desejar alterar o Collation.

2. 
Na pasta BINN da instalação do seu servidor SQLServer (ExemploC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn) inicie o serviço SQLServer da seguinte forma:
sqlservr -m -sNomeDaInstancia -T4022 -T3659 -q”NOME_DO_COLLATE_ESCOLHIDO”

3. Pressione Ctrl+C para parar o serviço atual

4. 
Inicie novamente o MSSQLServer da Instancia do SQLServer que você parou para concluir a alteração.

5.
 Testar…

Algumas informações sobre collation:
Notem que no final do nome do Collate tem algumas siglas, essas siglas fazem toda diferença na escolha, pois influenciam diretamente em como as querys e algumas funcionalidades do Banco tratam os dados.
CI = Case Insensitive
AI = Accents Insensitive
CS = Case Sensitive
AS = Accents Sensitive
WS = Width Sensitive (*1)
KS = Kanatype Sensitive (*2)

(*1) Kana-sensitive – Especifica que o SQL Server deve distinguir entre os dois tipos de caracteres kana japoneses: hiragana e katakana. Se não for selecionada o SQL Server considera caracteres hiragana e katakana iguais.

(*2) Width-sensitive – Especifica que o SQL Server deve distinguir entre um caractere de byte único (meia largura) e o mesmo caractere quando representado como um caractere de byte duplo (largura total).Se não for selecionada o SQL Server considera o byte único e byte duplo igualmente.

Ambos os casos acimas não são muito utilizados.

Você pode executar a função de sistema fn_helpcollations para recuperar uma lista de todos os nomes de agrupamentos válidos para agrupamentos do Windows e SQL Server:
SELECT name, description FROM fn_helpcollations();

~\\|//~
 -(o o)- RODRIGO SILVA
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s