¿Cómo muevo una tabla a un esquema en T-SQL?

Respuestas:

464
ALTER SCHEMA TargetSchema 
    TRANSFER SourceSchema.TableName;

Si desea mover todas las tablas a un nuevo esquema, puede usar el sp_MSforeachtableprocedimiento almacenado indocumentado (¡y en desuso en algún momento, pero poco probable!) :

exec sp_MSforeachtable "ALTER SCHEMA TargetSchema TRANSFER ?"

Árbitro.: ALTER SCHEMA

SQL 2008: ¿Cómo cambio el esquema db a dbo?

Trigo Mitch
fuente
66
2018 y aún me salvó la vida. Muchas gracias Mitch.
ClownCoder
19

Respuesta corta:

ALTER SCHEMA new_schema TRANSFER old_schema.table_name

Puedo confirmar que los datos en la tabla permanecen intactos, lo que probablemente sea bastante importante :)

Respuesta larga según los documentos de MSDN ,

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

Si se trata de una tabla (o cualquier otra cosa que no sea una colección de Tipo o Esquema XML), puede omitir la palabra Objeto, ya que ese es el valor predeterminado.

Ingeniero invertido
fuente
1
¿Por qué el voto negativo para mi respuesta correcta? Comprueba el mío con la respuesta aceptada, que es la misma, y ​​ya tiene 257 votos a favor (incluido el mío).
Ingeniero invertido
2
Tengo un voto positivo para confirmar que los datos permanecen intactos, lo que acaba de salvar mi presión arterial ... :)
66
@DaveBoltnman: ingresó una respuesta 6 años después de la respuesta aceptada y con su propio comentario arriba "que es lo mismo".
Mitch Wheat
44
¿Por qué los datos en una tabla no permanecerían intactos solo porque la tabla se mueve a un contenedor de esquema diferente?
Mitch Wheat
2
bonito cambio de nombre @DaveBoltman. Contestar viejas preguntas es genial, cuando agregan algo a las respuestas existentes.
Mitch Wheat