2009-07-19 6 views
225

Desidero spostare una tabella in uno schema specifico utilizzando T-SQL? Sto usando SQL Server 2008.Come si sposta una tabella in uno schema in T-SQL

+1

Se è necessario spostare più tabelle in un nuovo schema, vedere [Ridenominazione di più tabelle] (http://stackoverflow.com/questions/10942901/renaming-multiple-tables) – Tony

risposta

377
ALTER SCHEMA TargetSchema 
    TRANSFER SourceSchema.TableName; 

Se si desidera spostare tutti le tabelle in un nuovo schema, è possibile utilizzare la non documentata sp_MSforeachtable stored procedure (e di essere deprecato a un certo punto, ma improbabile!):

exec sp_MSforeachtable "ALTER SCHEMA TargetSchema TRANSFER ?" 

Ref .: ALTER SCHEMA

SQL 2008: How do I change db schema to dbo

12

breve un Swer:

ALTER SCHEMA new_schema TRANSFER old_schema.table_name 

posso confermare che i dati nella tabella rimane intatto, che è probabilmente molto importante :)

Risposta lunga come da MSDN docs,

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

Se si tratta di una tabella (o qualsiasi altra cosa oltre a una raccolta di Schemi di tipo o XML), puoi lasciare fuori la parola Oggetto poiché è quella predefinita.

+0

Perché il downgrade per la mia risposta corretta? Si prega di controllare il mio contro la risposta accettata, che è la stessa, e ha già 257 upvotes (incluso il mio). – DaveBoltman

+0

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

+3

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