web-dev-qa-db-ja.com

SQLServerの「CREATETABLE ... LIKE ...」に相当するものは何ですか

私はSQLServer(私はSQL Server noobです)を使用していて、テーブルを変更しようとしています。したい CREATE TABLE LIKEキーと制約、およびSQL Serverが元のテーブルを変更するときに必要と思われる他のすべてのリガモロールを削除している間、データを安全に保存しますが、そのコマンドに一致するものを見つけることができませんでした...

23
Ichorus

できるよ

SELECT * INTO #MyTable_tmp FROM MyTable

次に、MyTableを変更し、データをコピーして戻します。私が見た他のアプローチは、Mytable_Tmp(一時テーブルではない)という新しいテーブルを作成することです。これが新しいテーブルになります。

次に、必要な移行を行ってデータをコピーします。次に、元のテーブルを削除し、Mytableで名前を変更します。

または、データベースを比較して差分スクリプトまたはVSTS DB Edition(開発者に付属)を生成する多くの優れたツールの1つを入手し、プロジェクトファイルからDBへの差分スクリプトを実行できます。

編集

SELECT * INTO #MyTable FROM MyTableを実行すると、SQL Serverは、select句の各列とデータ型に一致する#MyTableという新しい一時テーブルを作成します。この場合、MyTableと一致するように*を選択しています。これは、デフォルト、制約インデックスなどをコピーしない列を作成するだけです。

18
JoshBerke

同じ構造を再現したいですか?

これはどう

 SELECT *
 into test
 FROM myRealTable
 where 0=1

新しいテーブルにデータは挿入されません

34
Fredou