Ás vezes há a necessidade de mudar schema de todas as tabelas no SQL Server.
Antes de usar a abordagem (abaixo), considerei recriar as tabelas em um schema novo e fazer a transferência dos dados. (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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
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
1 2 3 |
-- 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:
1 |
ALTER SCHEMA 'cadastro' TRANSFER 'dbo'.'cliente'; |
Fonte: Anatoly Lubarsky e MSDN Microsoft Librasy.
Vlw cara . Essa foi boa
valeu Thomas!