SQLServer2005を使ってみる・4 DBの移行

今回はこんな感じでやってみます。

移行元
Enterprise上AdventureWorks
移行先
Express上

方法1・BACKUP→RESTORE

バックアップコマンドはこんな感じ

osql -U sa -P password -S Enterprise
BACKUP DATABASE AdventureWorks
TO DISK='C:\backup\AdventureWorks.bak'
GO

んで、作成されたAdventureWorks.bakを移行先のサーバへ移動して

osql -U sa -P password -S Express
RESTORE DATABASE AdventureWorks
FROM DISK='C:\backup\AdventureWorks.bak'
GO

これで!と思ったら、エラー。メッセージを見ると、どうもディレクトリ構造が異なるせいらしい。
というのも、Express側には何度もインスタンス作成していたので^^;
(MSSQL.5まであった笑)
移行元と移行先のディレクトリ構造が同じなら上のコマンドでOKなはずです。

んで、ディレクトリ構造を変更するのにMOVE句を使用するのだけど、論理ファイル名と物理ファイル名の両方が必要になります。そこで、

RESTORE FILELISTONLY
FROM DISK='C:\backup\AdventureWorks.bak'
GO

と叩きました。これでLogicalNameとPhysicalName両方が表示されます。
論理ファイル名がAdventureWorks_DataとAdventureWorks_Log、物理ファイル名がAdventureWorks.mdfとAdventureWorks.ldfと分かったので、MOVE句を追加して再度RESTOREコマンドを叩いてみます。

RESTORE DATABASE AdventureWorks
FROM DISK='C:\backup\AdventureWorks.bak'
WITH MOVE 'AdventureWorks_Data' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.5\MSSQL\Data\AdventureWorks.mdf'
, MOVE 'AdventureWorks_Log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.5\MSSQL\Data\AdventureWorks.ldf'
GO

これでExpress側にAdventureWorksが移行されました。
ただし、データベースユーザーに関してはログインとの関連付けがSIDで行われる為、同じ名前のログイン名を用意しても関連付けが出来ません。

これ(Microsoft SQL Server 2005 Tips and Tips)

を見てもらうのが手っ取り早いのですが、掻い摘んで書いてみると

USE AdventureWorks
EXEC sp_change_users_login 'Report'
GO

で、ログインにマッピングされていないユーザーを洗い出し
(今回は自分で追加したtestuserがいました)

EXEC sp_change_users_login 'Update_One'
'tesruser','test_login'
GO

でユーザーを再マッピングできます。もちろん、この場合のログイン(test_login)はプロシージャ実行前に用意して下さい。

もしくは、ここ(上のTipsからもリンク有)にあるスクリプトを実行し

EXEC master..sp_help_revlogin
GO

と叩くと、インスタンスに存在するログインをそっくりそのまま作成するCREATE文が出力されるので、移行先でそのCREATE文を実行するとユーザーがマッピングされます。
全部のログインではなく、必要なログインのみ作成した方が良いと思います。というかDROPしないと全部は作成できないような。。。

CREATE文がいくつも出力されるので、ManagementStudioで実行するか、コマンドプロンプト使用の場合はファイルに書き出すようにしないと大変かもしれません。

SQL Server 7.0/2000ではsp_help_revloginはこれだったようです。
2005用のが7.0/2000でも使用出来るかは確認してないので、ご注意を。

sp_help_revloginでやっていることを手打ちで実行したいという人はここが非常に参考になると思います。


とまあ、こんな感じで移行出来ました。
一番最後に載せたリンクを見ると、

>通常は、DTSなどを使って、ログイン情報も転送します。

・・・DTSなんてシーラネ(お
スポンサーサイト

Comment

 
管理人にのみ表示する
 

Track Back

TB URL

HOME

プロフィール

ラキア

  • Author:ラキア
  • ビリヤードB級、JPA SL5
    ホームは新宿BAGUSと荻窪サンビリ

    プレイ :McDarmott+OBPro+
    ブレイク:Adam+OBSBS+
    ジャンプ:TENGU

最近の記事

カテゴリー

月別アーカイブ

最近のコメント

最近のトラックバック

ブログ内検索

RSSフィード

リンク