方法: データベースを別のサーバーにコピーする (SQL Azure)
Windows Azure Platform
Microsoft SQL Azure データベースは、Windows Azure Platform 上のリレーショナル データベース サービスです。SQL Azure でデータベースを作成したら、それを新しいデータベースにコピーして、データベースをバックアップすることができます。このトピックでは、データベースを異なる SQL Azure サーバー上の新しいデータベースにコピーする方法について説明します。
コピー処理によって作成された新しいデータベースは通常のデータベースになり、ソース データベースとは独立して完全に機能します。詳細については、「SQL Azure でのデータベースのコピー」を参照してください。
データベースを異なるサーバー上の新しいデータベースにコピーする方法
コピー先サーバー (新しいデータベースが作成される SQL Azure サーバー) の master データベースにログオンします。ソース SQL Azure サーバーのソース データベースのデータベース所有者 (DBO) と同じ名前とパスワードを持つログインを使用する必要があります。また、コピー先サーバー上のログインは、
dbmanager
ロールのメンバーであるか、サーバーレベル プリンシパル ログインである必要があります。ログインの詳細については、「SQL Azure におけるデータベースとログインの管理」を参照してください。サーバーへの接続の詳細については、「開発: 方法に関するトピック (SQL Azure データベース)」を参照してください。SQL Azure
CREATE DATABASE
ステートメントを使用して、ソース データベースのコピーを開始します。コピー先サーバーでこのステートメントを実行すると、データベースのコピー処理が開始されます。これは非同期プロセスなので、CREATE DATABASE
ステートメントが戻ってからデータベースのコピーが完了します。コピー先サーバーで
sys.databases
およびsys.dm_database_copies
ビューをクエリして、コピー処理を監視します。- コピーが進行中の場合は、新しいデータベースの
sys.databases
ビューのstate_desc
列に、"COPYING
" と表示されます。 - コピーが失敗した場合は、新しいデータベースの
sys.databases
ビューのstate_desc
列に、"SUSPECT
" と表示されます。この場合は、新しいデータベースに対してDROP
ステートメントを実行してから、コピーを再実行してください。 - コピーが成功した場合は、新しいデータベースの
sys.databases
ビューのstate_desc
列に、"ONLINE
" と表示されます。この場合は、コピーが完了し、新しいデータベースは通常のデータベースになり、ソース データベースとは無関係に変更することができます。
- コピーが進行中の場合は、新しいデータベースの
(オプション) コピーの進行中にコピー操作をキャンセルする場合は、新しいデータベースに対して
DROP DATABASE
ステートメントを実行します。または、ソース データベースに対してDROP DATABASE
ステートメントを実行して、コピー処理をキャンセルすることもできます。(オプション) コピー先サーバーで新しいデータベースが
Online
になったら、ALTER USER
ステートメントを使用して、新しいデータベースのユーザーをコピー先サーバー上のログインに再マップします。新しいデータベースのすべてのユーザーは、ソース データベースで持っていたアクセス許可を保持します。データベース コピーを開始したユーザーが新しいデータベースのデータベース所有者 (DBO) になり、新しいセキュリティ識別子 (SID) が割り当てられます。コピーの成功後、他のユーザーが再マップされるまでは、コピーを開始したログイン (DBO) だけが新しいデータベースにログオンできます。
例
次のコード例は、Server2
からデータベース コピー処理を開始し、Server1
という名前の SQL Azure サーバー上のデータベース Database1A
を Server2
上の Database2A
という名前の新しいデータベースにコピーする方法を示します。
-- execute on the master database of Server2
-- start copying from Server1 to Server2
CREATE DATABASE Database2A AS COPY OF Server1.Database1A
次のコード例では、Database2A
という名前の新しいデータベースに関する情報を取得するために Server2
の sys.databases
および sys.dm_database_copies
ビューをクエリして、データベースのコピー処理を監視します。
-- execute on the master database of Server2
-- retrieve state of the new database, Database2A
select name, state, state_desc from sys.databases
where name = ‘Database2A‘
-- retrieve copying details
select * from sys.dm_database_copies
where database_id = DB_ID(‘Database2A‘)
次のコードでは、新しいデータベースのユーザーをコピー先サーバー上のログインに再マップし、user1
、user2
、および user3
という名前の Database2A
ユーザーを login1
、login2
、および login3
という名前の Server2
ログインにマップします。
-- execute on the new Server2 database, named Database2A
-- re-map database users to logins on the destination server
ALTER USER user1 WITH LOGIN = login1
ALTER USER user2 WITH LOGIN = login2
ALTER USER user3 WITH LOGIN = login3
参照
タスク
方法: データベースをバックアップする (SQL Azure)
情報参照
CREATE DATABASE (SQL Azure データベース)
DROP DATABASE (SQL Azure データベース)
概念
ページのトップへ