Jak przenieść tabelę do schematu w T-SQL

Odpowiedzi:

464
ALTER SCHEMA TargetSchema 
    TRANSFER SourceSchema.TableName;

Jeśli chcesz przenieść wszystkie tabele do nowego schematu, możesz użyć procedury nieudokumentowanej (i być w pewnym momencie przestarzała, ale mało prawdopodobne!) sp_MSforeachtable:

exec sp_MSforeachtable "ALTER SCHEMA TargetSchema TRANSFER ?"

Ref .: ALTER SCHEMA

SQL 2008: Jak zmienić schemat db na dbo

Mitch Pszenica
źródło
6
2018 i wciąż uratowałem mi życie. Dziękuję bardzo Mitch.
ClownCoder
19

Krótka odpowiedź:

ALTER SCHEMA new_schema TRANSFER old_schema.table_name

Mogę potwierdzić, że dane w tabeli pozostają nienaruszone, co jest prawdopodobnie dość ważne :)

Długa odpowiedź zgodnie z dokumentami MSDN ,

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

Jeśli jest to tabela (lub coś oprócz kolekcji typu lub schematu XML), możesz pominąć słowo Obiekt, ponieważ jest to ustawienie domyślne.

Odwrócony inżynier
źródło
1
Dlaczego głosowanie za moją prawidłową odpowiedzią? Proszę sprawdzić moje z zaakceptowaną odpowiedzią, która jest taka sama i ma już 257 głosów pozytywnych (w tym moje).
Odwrócony inżynier
2
Głosuję za potwierdzenie, że dane pozostają nienaruszone, co właśnie uratowało moje ciśnienie krwi ... :)
6
@DaveBoltnman: wpisałeś odpowiedź 6 lat po zaakceptowanej odpowiedzi i własnym komentarzem powyżej „to jest to samo”.
Mitch Wheat
4
dlaczego dane w tabeli nie pozostałyby nietknięte tylko dlatego, że tabela została przeniesiona do innego kontenera schematu?
Mitch Wheat
2
niezła zmiana imienia @DaveBoltman. Odpowiedzi na stare pytania są świetne, gdy dodają coś do istniejących odpowiedzi.
Mitch Wheat