Come posso spostare una tabella in uno schema in T-SQL


Risposte:


464
ALTER SCHEMA TargetSchema 
    TRANSFER SourceSchema.TableName;

Se si desidera spostare tutte le tabelle in un nuovo schema, è possibile utilizzare la sp_MSforeachtableprocedura memorizzata non documentata (e per essere deprecata ad un certo punto, ma improbabile!) :

exec sp_MSforeachtable "ALTER SCHEMA TargetSchema TRANSFER ?"

Ref .: ALTER SCHEMA

SQL 2008: come posso modificare lo schema db in dbo


6
Il 2018 e mi ha ancora salvato la vita. Grazie mille Mitch.
ClownCoder

19

Risposta breve:

ALTER SCHEMA new_schema TRANSFER old_schema.table_name

Posso confermare che i dati nella tabella rimangono intatti, il che è probabilmente abbastanza importante :)

Risposta lunga secondo i documenti MSDN ,

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

Se è una tabella (o qualsiasi altra cosa oltre a una raccolta di schemi di tipo o XML), puoi tralasciare la parola oggetto poiché è l'impostazione predefinita.


1
Perché il downvote per la mia risposta corretta? Controlla la mia con la risposta accettata, che è la stessa, e ha già 257 voti positivi (inclusa la mia).
Ingegnere invertito,

2
Avere un voto per confermare che i dati rimangono intatti, il che mi ha appena salvato la pressione sanguigna ... :)

6
@DaveBoltnman: hai inserito una risposta 6 anni dopo la risposta accettata e con il tuo commento sopra "che è lo stesso".
Mitch Wheat,

4
perché i dati in una tabella non rimangono intatti solo perché la tabella viene spostata in un contenitore di schema diverso?
Mitch Wheat,

2
bel cambio di nome @DaveBoltman. Rispondere alle vecchie domande è fantastico, quando aggiungono qualcosa alle risposte esistenti.
Mitch Wheat,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.