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/
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:
* http://imasters.com.br/artigo/10413/sql_server/
Boa dia a todos.
ResponderExcluirCaro 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
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.
ExcluirVocê 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.