2017年8月15日火曜日

SQL SERVER でデータベースのコピー

1.SQL Server インポートおよびエクスポートウィザード


SSMS(SQL Server Management System)から利用する場合、
データベースを右クリックし、[タスク] → [データのインポート] または [データのエクスポート] をクリック

MSDN:SQL Server インポートおよびエクスポート ウィザードを実行する


2.bcpユーティリティを使う


MSDN:bcp ユーティリティ

TechNet:bcp ユーティリティ


3.デタッチ→アタッチ


SSMSでデータベース名を右クリック→タスク→デタッチ
該当のデータベースのldfファイルとmdfファイルをコピーし移行先に配置。
移行先のSSMSでデータベースを右クリック→アタッチから配置したmdfファイルを選択

MicrosoftDocs:デタッチとアタッチを使用してデータベースを移動する方法

ちなみにオフラインにしてバックアップするやり方は問題が生じる可能性があるとのことです。
SQL Server でオフライン バックアップおよびオフライン リストアを行うと問題が出ることがある


4.バックアップ→リストア


SSMSでデータベース名を右クリック→タスク→バックアップからバックアップファイルを作成し、移行先に配置。
移行先のSSMSでデータベースを右クリック→「データベースの復元」または「ファイルおよびファイルグループの復元」を選択
配置したファイルを選択し復元する。
なお「オペレーティング システム エラー 5(アクセスが拒否されました。) 」が出てしまう場合
コンピュータの管理→サービス→当該のSQL SERVERを右クリック→プロパティ→ログオンタブでローカルシステムアカウントを選択

下記を参照するとVSS WRITERがローカルシステムアカウントを要求するのが原因っぽいですが、ローカルシステムアカウントのような強い権限を使用するのは推奨されなさそうです。
MSDN:Windows サービス アカウントと権限の構成


5.スクリプト作成→実行


SSMSでデータベース名を右クリック→タスク→スクリプトの生成→ウィザードを進めた先の詳細設定をクリック→
スクリプト作成の詳細オプションのスクリプトを作成するデータの種類を「スキーマのみ」から適宜「スキーマとデータ」に変更→
ファイル、クリップボードなど用途に応じた形式で保存し、コピー先のデータベース上でスクリプトを実行

スクリプトなので改変が容易などのメリットがありますが、データが大きいとスクリプトが実行できない場合があります。



他にも方法があるかもしれません。
用途や環境に応じて検討する必要がありそうです。
以上メモまで。

0 件のコメント:

コメントを投稿