Como mover uma tabela para um esquema no T-SQL

Respostas:

464
ALTER SCHEMA TargetSchema 
    TRANSFER SourceSchema.TableName;

Se você deseja mover todas as tabelas para um novo esquema, pode usar o sp_MSforeachtableprocedimento armazenado não documentado (e que será descontinuado em algum momento, mas improvável!) :

exec sp_MSforeachtable "ALTER SCHEMA TargetSchema TRANSFER ?"

Ref .: ALTER SCHEMA

SQL 2008: Como altero o esquema db para dbo

Mitch Wheat
fonte
6
2018 e ainda salvou minha vida. Muito obrigado Mitch.
ClownCoder
19

Resposta curta:

ALTER SCHEMA new_schema TRANSFER old_schema.table_name

Posso confirmar que os dados na tabela permanecem intactos, o que provavelmente é bastante importante :)

Resposta longa de acordo com os documentos do MSDN ,

ALTER SCHEMA schema_name 
   TRANSFER [ Object | Type | XML Schema Collection ] securable_name [;]

Se for uma tabela (ou qualquer coisa além de uma coleção de Esquema de Tipo ou XML), você poderá deixar de fora a palavra Objeto, pois esse é o padrão.

Engenheiro reverso
fonte
1
Por que o voto negativo para a minha resposta correta? Por favor, verifique o meu em relação à resposta aceita, que é a mesma, e já possui 257 votos positivos (incluindo o meu).
Engenheiro reverso
2
Possui uma upvote para confirmar os dados permanecem intactos, o que acabou de salvar minha pressão arterial ... :)
6
@ DaveBoltnman: você inseriu uma resposta 6 anos após a resposta aceita e pelo seu próprio comentário acima "que é o mesmo".
Mitch Wheat
4
por que os dados em uma tabela não permanecem intactos apenas porque a tabela é movida para um contêiner de esquema diferente?
Mitch Wheat
2
boa mudança de nome @DaveBoltman. Responder a perguntas antigas é ótimo quando adicionam algo às respostas existentes.
Mitch Wheat