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


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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.