Nesse post iremos aprender a alterar a Collation de um Servidor.
Para quem não sabe, Collation é um parâmetro que é configurado durante a instalação do SQL Server e que determina como a engine do SQL irá tratar os caracteres inseridos no SQL Server. Podemos definir Collation a nível de servidor, database ou coluna. Existem diversos tipos de Collation para serem configurados e uma vez configurado o processo de alteração é um pouco complicado.
A Collation SQL_Latin1_General_CP1_CI_AS por exemplo não distingue maiúsculas e minúsculas, porém diferencia acentuação.
Sem mais delongas vamos ao processo de alteração.
Antes de tudo sugiro realizar um detach de todos os bancos de dados da instância, isso agiliza o processo, podemos fazer isso com o script abaixo, um backup dos bancos de sistema MASTER, MSDB e MODEL também não faz mal pra ninguém.
DECLARE @cont INT DECLARE @qtde INT DECLARE @dbname SYSNAME SET NOCOUNT ON SELECT NAME AS dbname INTO #Databases FROM master..sysdatabases WHERE dbid >= 5 ORDER BY DBID SET @qtde = @@ROWCOUNT SET @cont = 1 PRINT '/*' PRINT 'DESCRICAO.: Script Dettach_db do Servidor ' + @@SERVERNAME PRINT 'GERAÇÃO...: ' + convert(VARCHAR(10), getdate(), 103) PRINT 'AUTHOR....: ' + SYSTEM_USER PRINT 'DATABASES.: ' + CAST(@qtde AS VARCHAR) PRINT '*/' WHILE @qtde >= @cont BEGIN SET ROWCOUNT 1 SELECT @DBNAME = DBNAME FROM #Databases DELETE FROM #Databases SET ROWCOUNT 0 /*soma 1 no contador*/ SET @cont = @cont + 1 PRINT 'USE [master]' PRINT 'GO' PRINT 'ALTER DATABASE [' + @DBNAME + '] SET SINGLE_USER WITH ROLLBACK IMMEDIATE' PRINT 'GO' PRINT 'USE [master]' PRINT 'GO' PRINT 'EXEC master.dbo.sp_detach_db @dbname=N''' + @DBNAME + '''' PRINT 'go' END DROP TABLE #Databases
Agora que já realizamos o detach de todas as bases e os backups, vamos ao processo de alteração da Collation.
Primeiramente devemos parar o serviço da instância do SQL Server.
Com o serviço parado, devemos acesse o diretório de instalação do SQL Server e executar o seguinte comando sqlservr -m -T4022 -T3659 -q”SQL_Latin1_General_CP1_CS_AS”
Iremos alterar a collation da instância SQL Server de: SQL_Latin1_General_CP1_CI_AS para: SQL_Latin1_General_CP1_CS_AS
Abaixo podemos ver que a alteração da Collation foi realizada com sucesso.
Agora podemos iniciar novamente o serviço da instância
Conforme abaixo podemos ver a Collation alterada e também já podemos realizar o attach das bases novamente.