Alteração de schema de tabelas no SQL Server

Ás vezes há a necessidade de mudar schema de todas as tabelas no SQL Server.

Antes de usar a abordagem (abaixo), considerei recriá as tabelas em um schema novo e fazer a transferência dos dados. (rs, sem comentários!).

A tarefa de alterar o schema da tabela no SQL Server é um pouco diferente na versão 2000 em relação às versões 2005 ou superior:

Alterando schema de tabela no SQL Server 2000

DECLARE tabcurs CURSOR
FOR
    SELECT 'SOMEOWNER.' + [name]
      FROM sysobjects
     WHERE xtype = 'u'

OPEN tabcurs
DECLARE @tname NVARCHAR(517)
FETCH NEXT FROM tabcurs INTO @tname

WHILE @@fetch_status = 0
BEGIN

    EXEC sp_changeobjectowner @tname, 'dbo'

    FETCH NEXT FROM tabcurs INTO @tname
END
CLOSE tabcurs
DEALLOCATE tabcurs

No código acima o as tabelas do atual schema “SOMEOWNER” serão transferidas pra o “dbo”.

Alterando schema de tabela no SQL Server 2005 e 2008

-- Quebramos a linha pra facilitar a leitura!
ALTER SCHEMA '[nome_schema_novo]'
TRANSFER '[nome_schema_antigo]'.'[tabela_que_mudará_de_schema]';

Bem mais fácil!

Exemplo:

ALTER SCHEMA 'cadastro' TRANSFER 'dbo'.'cliente';

Fonte: Anatoly Lubarsky e MSDN Microsoft Librasy.

2 thoughts on “Alteração de schema de tabelas no SQL Server

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *