Comment déplacer une table dans un schéma dans T-SQL

Réponses:

464
ALTER SCHEMA TargetSchema 
    TRANSFER SourceSchema.TableName;

Si vous souhaitez déplacer toutes les tables dans un nouveau schéma, vous pouvez utiliser la sp_MSforeachtableprocédure stockée non documentée (et être obsolète à un moment donné, mais peu probable!) :

exec sp_MSforeachtable "ALTER SCHEMA TargetSchema TRANSFER ?"

Réf .: ALTER SCHEMA

SQL 2008: comment changer le schéma db en dbo

Blé Mitch
la source
6
2018 et encore sauvé ma vie. Merci beaucoup Mitch.
ClownCoder
19

Réponse courte:

ALTER SCHEMA new_schema TRANSFER old_schema.table_name

Je peux confirmer que les données du tableau restent intactes, ce qui est probablement assez important :)

Réponse longue selon les documents MSDN ,

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

S'il s'agit d'une table (ou de tout autre élément qu'une collection de types ou de schémas XML), vous pouvez omettre le mot objet puisque c'est la valeur par défaut.

Ingénieur inversé
la source
1
Pourquoi le downvote pour ma bonne réponse? Veuillez vérifier la mienne par rapport à la réponse acceptée, qui est la même, et a déjà 257 votes positifs (y compris le mien).
Ingénieur inversé
2
Avoir un vote positif pour confirmer que les données restent intactes, ce qui vient d'économiser ma tension artérielle ... :)
6
@DaveBoltnman: vous avez entré une réponse 6 ans après la réponse acceptée et par votre propre commentaire ci-dessus "qui est la même".
Mitch Wheat
4
pourquoi les données d'une table ne resteraient-elles pas intactes simplement parce que la table est déplacée dans un autre conteneur de schéma?
Mitch Wheat
2
joli changement de nom @DaveBoltman. Répondre aux vieilles questions est formidable, quand elles ajoutent quelque chose aux réponses existantes.
Mitch Wheat