主キー制約とそのテーブルに非クラスター化インデックスを含む新しいテーブルを作成しています。
キーとインデックスだけでなく、同じ構造と値を持つ別のテーブルを作成したいのですが。
create table Dummy (id integer ,name varchar(20),salary integer
Constraint PK_Con_id primary key(id))
insert into Dummy values(11,'AAA',1000);
insert into Dummy values(12,'BBB',2000);
insert into Dummy values(13,'CCC',3000);
insert into Dummy values(14,'DDD',4000);
select * from Dummy;
create nonclustered index IX_Name
on Dummy(Name)
現在、Dmy
テーブルを作成していますが、SQL Server 2008 R2のDmy
テーブルにキーと制約が反映されていません。
SELECT *
INTO Dmy
FROM Dummy
SELECT INTOはこれを行いません。列名とデータ型を維持しますが、制約、インデックスなど、テーブルの他の多くの側面を保持しないためです。列の1つに含まれている場合、列の外側に保持されるのはIDENTITYプロパティです。
オブジェクトエクスプローラーで元のテーブルを右クリックし、[スクリプトテーブルの形式]> [作成先]> [新しいクエリウィンドウ]を選択します。すべての制約などを含む元のテーブルのCREATE TABLEスクリプトが必要です。すべてを取得するには、これらの設定のいくつか([ツール]> [オプション]> [SQL Serverオブジェクトエクスプローラ]> [スクリプト])をtrueに設定する必要がある場合があります。必要なテーブル属性なので、これには試行錯誤が必要です。
次に、そのスクリプトを手動で変更して新しいテーブル名を指定し、すべての制約とインデックス名が一意になるように調整してください(これがどの程度の作業になるかは、命名規則が確立されているかどうかによって異なります) SQL Serverがスローするものをそのまま使用する場合)。
すべてSQL Server Management Studioで実行できます。
Script Table Asオプションは、主キーと外部キーおよび制約の作成コードを生成します。インデックス用のスクリプトは作成されないため、別の手順で作成する必要があります。タイプ、SSMSオブジェクトエクスプローラーですべてのオブジェクトタイプノードを展開することをお勧めします。
テーブル構造、主キーと外部キー、および制約のスクリプトを作成するには
生成されたスクリプトは、[クエリエディター]タブに表示されます。テーブル、主キー、外部キー、制約名は一意である必要があるため、必ず変更してください。
それ以外の場合は、次のようなエラーメッセージが表示されます'データベースに' Address 'という名前のオブジェクトがすでに存在します。'、または'名前 'AK_Address_rowguid'は既にテーブル 'Person.Address'に存在します。 '
インデックスのスクリプトを作成するには
上記と同様の手順を使用します。
データのINSERT INTOスクリプトを作成するには
4. Set Scripting Option sタブで、Advancedをクリックし、Types to data to scriptオプションがデータのみ
注:Schema&Dataを選択した場合、生成されるスキーマスクリプトは、この回答の最初のメソッドで生成されるスクリプトと同じになります。
5.スクリプトを実行する前に、テーブル名を新しいテーブルの名前に更新します。
FORスキーマ-テーブル、制約、キー
インデックス用
FORデータ