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

 
Certifique-se que você não possui nenhuma base de dados em readonly, restoring ou qualquer outro status que impeça sua alteração e garanta que as bases não estão sem espaço livre. Já tive erros neste procedimento porque algumas bases estavam sem espaço livre.

Pare o serviço do SQL Server. É possível usar vários métodos, um deles é parar os serviços usando o utilitário SQL Server Configuration Manager (sqlservermanager10.msc) como faço na figura abaixo.

 

Abra um prompt de comando e navegue até o diretório de instalação do SQL Server. Localize o arquivo sqlservr.exe e execute sqlservr -m -T4022 -T3659 -q"novo_collate".

 

Duas observações importantes: O -T deve ser maiúsculo e se a instalação o SQL Server estiver utilizando um nome de instância, a opção -s<nome_da_instância> deve ser adicionada.

Neste ponto o SQL Server será iniciado em single user mode e alterará o collate do servidor e todas as bases para o collate especificado na opção -q. Detalhe, lembre-se que este procedimento é NÃO Documentado, então não procure pelo parâmetro -q na lista de parâmtros do sqlservr.exe /? pois você não irá encontrá-lo :)

 

Ao final do processo tecle Ctrl+C e reinicie os serviços do SQL Server. Por exemplo utilizando o SQL Server Service Manager.

 

Para exemplificar, alterei o collate de SQL_Latin1_General_Cp1_CI_AI para SQL_Latin1_General_Cp1_CS_AS

 

Como pode ser visto nas imagens acima, se tiverem seguido os procedimentos de forma correta, neste momento a instância do SQL Server, todas as bases de dados e suas respectivas tabelas e colunas do tipo caracter estarão com o novo collation.

Compatibilidade

O procedimento foi testado com sucesso nas seguintes versões do SQL Server: SQL Server 2000, SQL Server 2005 e SQL Server 2008.

Fonte: http://www.mcdbabrasil.com.br/modules.php?name=News&file=article&sid=244