HomeArtigosCategoriaBANCO DE DADOS › Como alterar o collate do sql server

Como alterar o collate do SQL Server

Postado em 14/10/2008 às 11:25:09 AM por Adriano Rosa na categoria Banco de Dados

Algumas vezes, na migração de uma base de dados ou na exportação de alguns dados para uma base de outro servidor, podemos ter certos problemas com acentuação. Isto ocorre se os dados da base de origem forem armazenados com seu collate (formato) diferentes da base de destino, ou seja, se temos uma base com seu collate em Latin1_General_CI_AI e exportarmos seus dados para uma outra base no qual o collate definido seja diferente a acentuação destes registros ficarão de forma truncada.

Vejamos um exemplo

A palavra "Nova Zelândia" foi registrada no banco com collate em Latin1_General_CI_AI . Ao exportamos estes dados para uma outra base onde o collate padrão seja SQL_Latin1_General_CP850_CI_AI, iremos visualizar a mesma palavra desta forma "Nova Zel?ndia"
Você pode evitar esse tipo de transtorno antes de exportar ou migrar os dados, mas antes verifique o collate da base de destino, executando o comando SP_HELPDB no Query Analizer, na a coluna status poderá ser visto o collate que está sendo usado,


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

veja os comandos;

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 no Query Analizer teremos assim:



A mensagem "Nonqualified transactions are being rolled back. Estimated rollback completion: 100%." significa que o procedimento foi efetuado com sucesso.

Agora é possível exportar ou migrar os dados de uma base para outra sem que tenhamos problemas com acentuação.

Lembrando que 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.


Publicidade
(1) Comentário
  • Comentou Edgarweb
    disse em 18/11/2008 01:11:07

    é possível alterar apenas um campo?

Seu comentário foi salvo com sucesso.

aguarde   Aguarde estamos gravando seu comentário ...
Escreva um comentário Somente texto, Não é permitido uso de tags html
Ultimos Comentários

Desenvolvido em XHTML, CSS, ASP, WEBSTANDARDS
Armazenamento de Dados: SQLServer

AdrianoRosa.Com © 2008 Todos os Direitos Reservados
Autor: Adriano Rosa.

Creative Commons License

Valid XHTML 1.0 Strict