Как переместить таблицу в схему в T-SQL


273

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


1
Если вам нужно переместить несколько таблиц в новую схему, см. Переименование нескольких таблиц
Тони,

Ответы:


464
ALTER SCHEMA TargetSchema 
    TRANSFER SourceSchema.TableName;

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

exec sp_MSforeachtable "ALTER SCHEMA TargetSchema TRANSFER ?"

Ref .: ALTER SCHEMA

SQL 2008: как изменить схему БД на dbo


6
2018 и до сих пор спас мне жизнь. Большое спасибо, Митч.
ClownCoder

19

Короткий ответ:

ALTER SCHEMA new_schema TRANSFER old_schema.table_name

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

Длинный ответ в соответствии с документами MSDN ,

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

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


1
Зачем понизить голос за мой правильный ответ? Пожалуйста, проверьте мой против принятого ответа, который является тем же, и уже имеет 257 голосов (включая мой).
Обратный инженер

2
Получите подтверждение, что данные остаются нетронутыми, что просто спасло мое кровяное давление ... :)

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

4
почему данные в таблице не остаются неизменными только потому, что таблица перемещена в другой контейнер схемы?
Митч Уит

2
хорошая смена имени @DaveBoltman. Отвечать на старые вопросы замечательно, когда они добавляют что-то к существующим ответам.
Митч Уит
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.