Wie verschiebe ich eine Tabelle in ein Schema in T-SQL?

Antworten:

464
ALTER SCHEMA TargetSchema 
    TRANSFER SourceSchema.TableName;

Wenn Sie alle Tabellen in ein neues Schema verschieben möchten , können Sie die undokumentierte (und irgendwann veraltete, aber unwahrscheinliche!) sp_MSforeachtableGespeicherte Prozedur verwenden:

exec sp_MSforeachtable "ALTER SCHEMA TargetSchema TRANSFER ?"

Ref.: ALTER SCHEMA

SQL 2008: Wie ändere ich das Datenbankschema in dbo?

Mitch Wheat
quelle
6
2018 und rettete mir immer noch das Leben. Vielen Dank Mitch.
ClownCoder
19

Kurze Antwort:

ALTER SCHEMA new_schema TRANSFER old_schema.table_name

Ich kann bestätigen, dass die Daten in der Tabelle intakt bleiben, was wahrscheinlich sehr wichtig ist :)

Lange Antwort gemäß MSDN-Dokumenten ,

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

Wenn es sich um eine Tabelle handelt (oder um etwas anderes als eine Typ- oder XML-Schemasammlung), können Sie das Wort Objekt weglassen, da dies die Standardeinstellung ist.

Umgekehrter Ingenieur
quelle
1
Warum die Ablehnung für meine richtige Antwort? Bitte überprüfen Sie meine Antwort anhand der akzeptierten Antwort, die dieselbe ist und bereits 257 positive Stimmen hat (einschließlich meiner).
Umgekehrter Ingenieur
2
Haben Sie eine positive Bewertung für die Bestätigung, dass die Daten intakt bleiben, was gerade meinen Blutdruck gerettet hat ... :)
6
@ DaveBoltnman: Sie haben eine Antwort 6 Jahre nach der akzeptierten Antwort und durch Ihren eigenen Kommentar oben "das ist das gleiche" eingegeben.
Mitch Wheat
4
Warum bleiben Daten in einer Tabelle nicht intakt, nur weil die Tabelle in einen anderen Schemacontainer verschoben wird?
Mitch Wheat
2
nette Namensänderung @DaveBoltman. Die Beantwortung alter Fragen ist großartig, wenn sie vorhandenen Antworten etwas hinzufügen.
Mitch Wheat