Tak, to możliwe.
Aby zmienić schemat obiektu bazy danych, musisz uruchomić następujący skrypt SQL:
ALTER SCHEMA NewSchemaName TRANSFER OldSchemaName.ObjectName
Gdzie ObjectName może być nazwą tabeli, widoku lub procedury składowanej. Wydaje się, że problemem jest uzyskanie listy wszystkich obiektów bazy danych o podanej nazwie shcema. Na szczęście istnieje tabela systemowa o nazwie sys.Objects, która przechowuje wszystkie obiekty bazy danych. Następujące zapytanie wygeneruje wszystkie potrzebne skrypty SQL do wykonania tego zadania:
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'))
Gdzie typ „U” oznacza tabele użytkownika, „V” oznacza widoki, a „P” oznacza procedury składowane.
Uruchomienie powyższego skryptu wygeneruje polecenia SQL potrzebne do przeniesienia obiektów z jednego schematu do drugiego. Coś takiego:
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;
Teraz możesz uruchomić wszystkie wygenerowane zapytania, aby zakończyć operację przesyłania.