Да, възможно е.
За да промените схемата на обект на база данни, трябва да изпълните следния SQL скрипт:
ALTER SCHEMA NewSchemaName TRANSFER OldSchemaName.ObjectName
Където ObjectName може да бъде името на таблица, изглед или съхранена процедура. Проблемът изглежда е получаването на списъка с всички обекти на база данни с дадено име на схема. За щастие има системна таблица с име sys.Objects, която съхранява всички обекти на базата данни. Следната заявка ще генерира всички необходими SQL скриптове за изпълнение на тази задача:
SELECT 'ALTER SCHEMA NewSchemaName TRANSFER [' + SysSchemas.Name + '].[' + DbObjects.Name + '];'
FROM sys.Objects DbObjects
INNER JOIN sys.Schemas SysSchemas ON DbObjects.schema_id = SysSchemas.schema_id
WHERE SysSchemas.Name = 'OldSchemaName'
AND (DbObjects.Type IN ('U', 'P', 'V'))
Където тип 'U' обозначава потребителски таблици, 'V' обозначава изгледи и 'P' обозначава съхранени процедури.
Изпълнението на горния скрипт ще генерира SQL командите, необходими за прехвърляне на обекти от една схема в друга. Нещо подобно:
ALTER SCHEMA NewSchemaName TRANSFER OldSchemaName.CONTENT_KBArticle;
ALTER SCHEMA NewSchemaName TRANSFER OldSchemaName.Proc_Analytics_Statistics_Delete;
ALTER SCHEMA NewSchemaName TRANSFER OldSchemaName.Proc_CMS_QueryProvider_Select;
ALTER SCHEMA NewSchemaName TRANSFER OldSchemaName.COM_ShoppingCartSKU;
ALTER SCHEMA NewSchemaName TRANSFER OldSchemaName.CMS_WebPart;
ALTER SCHEMA NewSchemaName TRANSFER OldSchemaName.Polls_PollAnswer;
Сега можете да стартирате всички тези генерирани заявки, за да завършите операцията по прехвърляне.