Você está na página 1de 2

-- Alterando Server Collation

-- 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:

-- Iremos alterar a collation da instância SQL Server de:


SQL_Latin1_General_CP1_CI_AS para: Latin1_General_CI_AS

sqlservr -m -T4022 -T3659 -sINSTANCIA -q"SQL_Latin1_General_CP1_CS_AS"

sqlservr -m -T4022 -T3659 -s "MSSQLSERVER01" -q"Latin1_General_CI_AS"

-- Agora podemos iniciar novamente o serviço da instância.

Você também pode gostar