三月 22, 2016

SQL Serverで、DBの中身を他のDBにコピーする

はじめに

普通に考えると、DBをバックアップ・レストアすればOKに思えますが、
SQL Serverのバックアップは、データファイルの場所を含めて復元しようと
してしまう為、この用途では都合がよくありません。

普通に考えると

エクスポートすれば出来そうですが、テキストファイルにエクスポートする際は
1テーブルずつしかデータを出力できません。これは面倒です

ご注意

この方法はデータが大量の場合、適さない可能性が高いです。
#割と遅い、重い処理に思えます

手順

SQL Server Management Studioから、データベースを右クリックして
スクリプトの生成を選択します。
対象を聞かれるので、「特定のデータベース オブジェクトの選択」を選んで
必要なテーブルだけチェックを入れて、「次へ」

ここが重要です
● ファイルに保存 の右に、詳細設定ボタンがあります。
これを押すと、色々と項目がでてくるのですが、その中に、
「スクリプトを作成するデータの種類」という項目があり、初期値はスキーマのみ
となっています。これを、「スキーマとデータ」に変更します。

あとは、次へを押してスクリプトを出力させればOKです。
CREATE TABLE文と、INSERT文がずらずらとSQLファイルに書かれます。
これを、取り込みたいDB上で実行すればOKです。

SQLファイルはタダのテキストなので、要らない部分は消してしまえば良いし、
その他いろいろと取り扱いが楽なのでオススメです。

環境など

SQL Server 2012 Express localdb
SQL Server Management Studio 2012