WINDOWS及びサーバー関連の話題、TIPS & テクニック の一覧に戻る

SQL SERVER における、dcpのエクスポート・インポートを利用したデーターベースのバックアップとリストアの方法について

SQL SERVER における、dcpのエクスポート・インポートを利用したデーターベースのバックアップとリストアの方法について


bcp を使用することで、テーブルの内容をエクスポートすることができますが、
format ファイルの中身を見ると分かるように、完全なスキーマ・主キー情報などはエクスポートされないため、
それを元に、インポート先にテーブルが無い状態から、テーブル自体を作成しながらインポート/リストアすることはできないようです。
(何らか工夫してできたらごめんなさい ^^;)

スキーマ情報は、データーベースを右クリック>すべてのタスク の中に、「テーブルをスクリプト化」がありますので、
それを使用して、すべてのテーブルを一括でスクリプト化することで、エクスポートすることができます。
そのスクリプトを、インポート先の SQL SERVER で実行することで、スキーマ構造だけをまず作成することができます。
(クエリウィンドウで実行します)

bcp に話を戻すと、データーベース階層下のテーブル全てを、一括で処理する(データをエクスポートしてファイルにする)には、
コマンドラインスクリプトを書かなければなりません。少し手がかかるので、以下に簡単なプログラムを用意しました。

まず、テーブルの一覧を取得しなければなりません。エクスポートする元のSQLサーバーの、
SQL Server Management Studio にて、新しいクエリを作成し、
select * from sys.objects where type = 'U'
を実行してください。テーブルが列挙されますので、その名前の部分をコピーしてください。
システムテーブルなどが含まれていないかチェックし、含まれていたら削除してください。

そのテーブル名の一覧(改行区切り)を、以下に貼り付けてください。



残りの、必要な情報を記入して、作成ボタンを押してください。
最初から記入されている文字列は例ですので、変更する必要があります。
サーバー名
データーベース名
アカウント名
パスワード
ファイルを保存する場所
パスワードについては、仮のユニークな文字列を入力し、あとでメモ帳などで置換してください。



作成されたコマンドは、bat ファイルにして実行するか、コマンドプロンプトにそのまま貼り付けて実行してください。
(クエリウィンドウで実行するスクリプトではありませんので注意してください)
(バッチファイルとして保存してから実行する場合は、文字コードに留意してください。ANSIでなけば文字化けすることがあります。)
コマンドプロンプトは、管理者で起動すると確実です。
テーブルの内容を一度クリアする場合は、「テーブル内容削除用」を使用してください。

追記:CSV形式ですと、デリミタ設定の不具合によって、正しくインポートできないことがありましたので、
SQL SERVER ネイティブ形式(エクスポート用2、インポート用2)でもコマンドが出力されるようになっています。
これも、調べれば CSV のままで、データの当該部分をエスケープするようなコマンドがあるのかもしれません。



以上で、説明は終了です。




WINDOWS及びサーバー関連の話題、TIPS & テクニック の一覧に戻る

Information of This Page
SQL SERVER における、dcpのエクスポート・インポートを利用したデーターベースのバックアップとリストアの方法について pubdate:


© 2021
Author : FloatGarden