¿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?


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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.