ALTERAR COLLATION DE BANCO DE DADOS SQL SERVER

Neste post demonstrarei como alterar o collation de um banco de dados SQL Server.

Vamos aos passos:

  1. Verificar o collation atual do banco de dados;
    1
  2. Rodar o script para alteração do collation do banco de dados;
    1
  3. Validar a alteração;
    1
  4. Agora temos que verificar as colunas que temos no formato texto para alterarmos o collation  uma a uma:
    1
  5. Query para geração dos scripts;
    1
  6. Copiar os comandos gerados, abrir um New Query e executar os scripts de alteração;
    1
  7. Consultando os collations após a alteração;
    1

 

Pronto, collations alterados!

Obs: após finalizar recrie todos seus índices.

Até mais!!!

Anúncios

8 comentários sobre “ALTERAR COLLATION DE BANCO DE DADOS SQL SERVER

  1. Prezado Galvão,

    No seu script você define para alteração,

    ALTER TABLE Downloads ALTER COLUMN Mime varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AI NULL

    No caso você definiu a na consulta que todos vão ser null, porém gostaria de saber se tem como gerar na consulta para ele buscar se o campo é not null ou null, pode ser ?

    Grato

    Cláudio Bruno

    • Olá Cláudio, boa noite.

      Tem sim!

      Remover o “NULL” que está fixo na geração do script e concatenar com o CASE conforme exemplo abaixo:

      select ‘… SQL_Latin1_General_CP1_CI_AS ‘ + case is_nullable
      when 1 then ‘ null ‘
      else ‘ not null ‘
      end as ‘col_null’
      from sys.columns

      Abraço,
      Bob

      • Deu certo para compartilhar com os próximos leitores, segue abaixo,

        select ‘ALTER TABLE ‘ + ts.name +’.’+ t.name + ‘ ALTER COLUMN ‘ + c.name + ‘ ‘ + ty.name + ‘(‘ + CONVERT(VARCHAR, c.max_length) + ‘) COLLATE SQL_Latin1_General_CP1_CI_AI’ + ‘ ‘ +
        case
        when c.is_nullable =1 then ‘null’
        else ‘not null’
        end

        from sys.columns as c
        inner join sys.tables as t on c.object_id = t.object_id
        inner join sys.schemas as ts on t.schema_id = ts.schema_id
        inner join sys.types as ty on ty.system_type_id = c.system_type_id
        where c.collation_name is not null
        and t.type = ‘U’;
        go

        Grato

        Cláudio Bruno

      • Valeu Cláudio!
        Abraço,
        Bob

  2. Galvão,

    Apareceu um novo problema, tenho campos que são identifier com tipo char e são chaves primarias ou secundárias, no momento da importação retorna seguinte mensagem,

    Msg 5074, Level 16, State 1, Line 5
    The object ‘FK_FrequenciasNova_Alunos’ is dependent on column ‘Aluno_RA’.
    Msg 4922, Level 16, State 9, Line 5
    ALTER TABLE ALTER COLUMN Aluno_RA failed because one or more objects access this column.

    Como poderia resolver isto ?

    Grato

    Cláudio Bruno

  3. Muito bom, ajudou bastante.

    Att.

    Rafael Fagundes

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s