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


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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.