2009-07-19 7 views
225

Я хочу переместить таблицу в конкретную схему с помощью T-SQL? Я использую SQL Server 2008.Как переместить таблицу в схему в T-SQL

+1

Если вам нужно переместить несколько таблиц в новую схему, см. [Переименование нескольких таблиц] (http://stackoverflow.com/questions/10942901/renaming-multiple-tables) – Tony

ответ

377
ALTER SCHEMA TargetSchema 
    TRANSFER SourceSchema.TableName; 

Если вы хотите переместить все таблицы в новую схему, вы можете использовать недокументированные sp_MSforeachtable хранимой процедуры (и устареет в какой-то момент, но вряд ли!):

exec sp_MSforeachtable "ALTER SCHEMA TargetSchema TRANSFER ?" 

Ref .: ALTER SCHEMA

SQL 2008: How do I change db schema to dbo

12

Short swer:

ALTER SCHEMA new_schema TRANSFER old_schema.table_name 

Я могу подтвердить, что данные в таблице остается неизменным, что, вероятно, очень важно :)

Длинный ответ согласно MSDN docs,

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

Если это таблица (или что-либо помимо коллекции Type или XML Schema), вы можете оставить слово Object, поскольку это значение по умолчанию.

+0

Почему нижний предел для моего правильного ответа? Пожалуйста, проверьте мой против принятого ответа, который является тем же самым, и имеет уже 257 upvotes (включая мой). – DaveBoltman

+0

Имейте upvote для подтверждения, что данные остаются нетронутыми, что только что спасло мое кровяное давление ... :) – 2016-02-07 23:05:52

+3

@DaveBoltnman: вы ввели ответ через 6 лет после принятого ответа и своим собственным комментарием выше «то же самое», , –