▼SQLServerDB間でデータコピー

   コピー先のテーブルが存在していないとダメ
   INSERT INTO [DB_B].[dbo].[TABLE1] SELECT * FROM [DB_A].[dbo].[TABLE1]

   コピー先のテーブルが存在していなくても、作ってくれる
   select * into xxxTBL_BACKUP from xxxTBL

▼BCPコマンド

   データのエクスポート
   C:\>bcp databasename.dbo.tablename out c:\tablename.csv -c -U sa -P ******* -t "," -T -S servername

   データのインポート
   C:\>bcp databasename.dbo.tablename in c:\tablename.csv -c -U sa -P ******* -t "," -T -S servername

▼SQLServerのDBのコピー手順と注意点

   データベースのバックアップをとり、そのバックアップファイルを他の環境へ持っていき復元する

   1.コピー元の環境でSQL Enterprise Managerを起動しDBに接続します。
   2.対象のDBを選択し、右クリック→すべてのタスク→データベースのバックアップを選択します。
   3.出力先の「追加」ボタンで出力するフォルダを選択します。
   4.OKボタンでバックアップが開始されます。
   5.ファイルをコピー先へ持ち込み、サーバの適当なフォルダにでもファイルを一時保存します。
   6.コピー先の環境でSQL Enterprise Managerを起動しDBに接続します。
   7.DBが未作成であれば新規作成します。
   8.復元するDBを選択し右クリック→すべてのタスク→データベースの復元を選択します。
   9.「復元:デバイスから」をチェックします。
   10.デバイス選択ボタンでバックアップファイルを置いたフォルダにアクセスしファイルを選択します。
   11.オプションタブで「既存のデータベース上に強制的に復元」をチェックします。
   12.そして論理ファイル名と物理ファイル名が表示されているグリッド部の物理ファイル名と
       そのパスをよくチェックして下さい。

   ここがコピー元環境と違っているにもかかわらず、そのまま実行すると、
   デバイス アクティブ化エラー ・・・ WITH MOVEオプションを使用します・・・ 
   RESTORE DATABASEが異常終了しました。
   とエラーになります。
   ミソは9でファイルからの復元が可能となる事、12に注意する事です。
   ここをおさえておけばすんなり復元できるかと思います。

   補足:
   その他にデタッチ&アタッチによる方法もありますが、こちらは一時的にDBが使用できなくなるので、
   DBの使用者がいれば迷惑がかかります。
   DBを丸ごと別のPCに移す場合等はこちらの方法が楽です。
   コピー元PCとコピー先PCが同LAN内にある場合は、
   データのエクスポート&インポートでも実現可能です。
最終更新:2011年08月17日 18:57