Ás vezes há a necessidade de mudar esquema de todas as tabelas, para aqueles que utilizam SQL Server e, como eu. Estão (ou estavam) tentando achar uma maneira de como alterar o schema de uma tabela sem precisar recriá-la no schema novo e fazer a transferência dos dados. Eis a solução perfeita para essa tarefa.
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 e 2008:
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]';
Exemplo:
ALTER SCHEMA 'cadastro' TRANSFER 'dbo'.'cliente';
Fonte: Anatoly Lubarsky e MSDN Microsoft Librasy.