Mee's Engineer Blog

PHPエンジニアの技術ブログ

SQLServerでIdentityが設定されているテーブルをコピーする方法

SQLServerで本番環境DBのテーブルデータを、試験環境DBのテーブルにコピーする必要がありました。
その際、対象テーブルにIdenityが設定されていた場合、普通にコピーすると採番が再設定されてしまうので
下記の方法で対応しました。

table_1 → コピー元テーブル
table_2 → コピー先テーブル
field_1 → フィールド1
filed_2 → フィールド2

【作業その1 フィールド名取得】
SELECT * FROM syscolumns
WHERE id = object_id('table_1')

【作業その2 コピー先テーブルのトランケート】
TRUNCATE TABLE table_2

【作業その3 コピー】
SET IDENTITY_INSERT table_2 ON
INSERT INTO 
table_2
(
field_1,
field_2,
.
.
.
)
SELECT * FROM tabke_1;
SET IDENTITY_INSERT table_2 OFF