異なるSQL Azureサーバー間でDATABASE COPYを実行した

注意事項

コピー元のSQL Azureサーバーとコピー先のSQL Azureサーバーは、同じDCを選択していますか?違うデータセンターの場合、次のエラーが発生し悩みまくります。

メッセージ 40532、レベル 11、状態 1、行 1
Cannot open server "lx88a7fkwl" requested by the login.  The login failed.

エラー内容から、異なるDC間でコピーしようとして失敗したっと気づくのは至難の業なのでご注意を。

コピー元SQL Azureサーバー

–① masterデータベースにログインを作成
CREATE LOGIN test WITH password=’P@ssw0rd’;
GO

–② コピー元データベースにユーザーを作成
CREATE USER test FROM LOGIN test;
GO

–③ コピー元データベースのユーザーにdb_onwerロールを付与
EXEC sp_addrolemember ‘db_owner’, ‘test’
GO

コピー先SQL Azureサーバー

–① masterデータベースにログインを作成
CREATE LOGIN test WITH password=’P@ssw0rd’;
GO

–② masterデータベースにユーザーを作成
CREATE USER test FROM LOGIN test;
GO

–③ ユーザーにロール付与
EXEC sp_addrolemember ‘dbmanager’, ‘test’;
GO

データベースのコピーを実行

–CREATE DATABASE コピー先データベース名 AS COPY OF (コピー元サーバ名).データベース名
–(例)
CREATE DATABASE test AS COPY OF rvpqy0fvb2.test

–実行状況の確認
SELECT * FROM sys.dm_database_copies

詳細

データベース・コピーを使用してSQL Azureデータベースをバックアップするを参照してください。

補足

コピーしたデータベースを運用するには、ログインとユーザーマッピングをし直す必要があるので、コピーだけして安心しないように。