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

Ответы:

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. Отвечать на старые вопросы замечательно, когда они добавляют что-то к существующим ответам.
Митч Уит