T-SQLでスキーマにテーブルを移動する方法


回答:


464
ALTER SCHEMA TargetSchema 
    TRANSFER SourceSchema.TableName;

すべてのテーブルを新しいスキーマに移動たい場合は、ドキュメント化されていない(そして将来廃止される予定ですが、ありそうもない!)sp_MSforeachtableストアドプロシージャを使用できます。

exec sp_MSforeachtable "ALTER SCHEMA TargetSchema TRANSFER ?"

参照: ALTER SCHEMA

SQL 2008:dbスキーマをdboに変更する方法


6
2018年も私の人生を救った。ミッチさん、ありがとうございました。
ClownCoder 2018

19

短い答え:

ALTER SCHEMA new_schema TRANSFER old_schema.table_name

表のデータが変更されていないことを確認できます。これはおそらく非常に重要です:)

MSDNドキュメントによる長い回答、

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

それがテーブル(またはTypeまたはXMLスキーマコレクション以外のもの)の場合、それがデフォルトであるため、Objectという単語は省略できます。


1
なぜ私の正解に対する反対票が投じられるのですか?受け入れられた回答と同じように鉱山を確認してください。これは、257の賛成票がすでにあります(鉱山を含む)。
リバースエンジニア、

2
データが無傷のままであることを確認する

6
@DaveBoltnman:承認された回答から6年後に、「同じ」の上の自分のコメントによって回答を入力しました。
ミッチウィート

4
テーブルが別のスキーマコンテナーに移動されたからといって、なぜテーブル内のデータが変更されないのですか?
ミッチウィート

2
@DaveBoltmanの名前を変更します。古い質問に答えることは素晴らしいです。彼らが既存の答えに何かを追加するときです。
ミッチウィート
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.