Pular para o conteúdo principal

Como alterar o collate do SQL Server

Para alterar a COLLATE (formato) da base de dados primeiro deve-se verificar qual a COLLATION atual com o comando SP_HELPDB 'nome_da_base_de_dados', onde no campo 'status' poderá ser verificado o parâmetro 'collation'.



Para alterar o COLLATE padrão da base, precisamos antes ajustar o banco para o modo "SINGLE_USER", onde ele ficará em modo exclusivo, caso contrário teremos a mensagem de erro "The database could not be exclusively locked to perform the operation".

A seguir seqüência de comandos a ser executada:

ALTER DATABASE 'NOMEBANCO' SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE 'NOMEBANCO' COLLATE 'NOVO_COLLATION'
ALTER DATABASE 'NOMEBANCO' SET MULTI_USER

Explicando o código:

1º linha altera o banco para o modo "single_user"
2º linha modifica o Collate para Latin1_General_CI_AI
3º linha é redefinido o banco para o modo "multi_user"
Executando teremos assim:


Este procedimento irá alterar o COLLATE do banco de dados. Na criação de novas tabelas estará com o novo COLLATION definido, porém as tabelas já existentes permanecerão com o COLLATION anterior.

* http://imasters.com.br/artigo/10413/sql_server/

Comentários

  1. Boa dia a todos.
    Caro Marcos Santos,
    Existe alguma query que possibilita verificar a alteração da collation ? A mesma foi trocada e preciso saber qual era a collation anterior.
    Isto é possível ?
    Muito obrigado.
    Wanderley

    ResponderExcluir
    Respostas
    1. Caro Wanderley, se não entendi errado você alterou a collation somente da base de dados, ou seja, a padrão, sendo assim, todos os objetos já criados continuarão com a collation anterior.
      Você pode verificar a collation de alguma das tabelas utilizando a query:

      SELECT TABLE_NAME, COLUMN_NAME, COLLATION_NAME
      FROM INFORMATION_SCHEMA.COLUMNS
      WHERE TABLE_NAME = 'tabela' --Nome da tabela a verificar.

      Espero ter ajudado.

      Excluir

Postar um comentário

Postagens mais visitadas deste blog

Tipos de dados no Sql Server

De vez em quando nos deparamos com uma questão: qual o tipo de dado deve ter um determinado campo? Para um DBA isso é um bom questionamento, pois com base nessa definição outras decisões serão tomadas. O que me motivou a pesquisar e escrever sobre isso foi a frase de um desnvolvedor: "Pouco importa se é varchar, char, text..., pra mim tudo é string."

Conceitos básicos de banco de dados - Integridade

A integridade diz respeito ao nível de confiança das informações do banco de dados, ou seja, a credibilidade das informações e à lógica das informações. Regras de restrição de integridade configuraram um banco de dados para ser alimentado por informações com características lógicas específicas, validadas como verdadeiras antes do seu armazenamento, diminuindo a probabilidade de falta de integridade no banco de dados.