0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Azure] サブスクリプション間やテナント間でSQL Databaseを中身ごとコピーする方法

Last updated at Posted at 2020-07-08

要約

以下のコマンドをコピー先のSQL Serverで実行する

CREATE database [コピー先DB名] AS COPY OF [コピー元SQL Server名].[コピー元SQL Database名]

※ 以下注意点

  • コピー元のSQL Serverにコピー先SQL Serverのログインユーザーと同じユーザー名同じパスワードのユーザーを作成しておく必要がある
  • 上記のユーザーは両方のSQL Serverで**dbmanagerロールサーバー管理者**である必要がある
  • 上記のユーザーはコピー元SQL Databaseで**db_ownerロール**である必要がある

ちょっと詳しく

コピー元SQL Server、SQL Databaseとコピー先SQL Server、ログイン情報を以下のように仮定します。

  • コピー元SQL Server

    • Server名:oldserver
    • コピー元SQLDB名:olddatabase
  • コピー先SQL Server

    • Server名:newserver
    • ログインユーザー名:newserveradmin(サーバー管理者)
    • ログインユーザーパスワード:fV7pSNBr

1. コピー元SQL Serverにログインユーザーを作成

コピー元SQL Server(oldserver)にコピー先SQL Serverのログインユーザーと同名のログインを作成します。SSMSやAzure Dara Studioなどでoldserverにログインして以下のSQLクエリを実行します。

USE master;
CREATE LOGIN newserveradmin
WITH PASSWORD = 'fV7pSNBr'

masterDBにユーザーも作成します。この時ロールをdbmanagerにしておく必要があります。

USE master;
CREATE USER newserveradmin FOR LOGIN newserveradmin;
ALTER ROLE "dbmanager" ADD MEMBER newserveradmin;

2. コピー元SQL Databaseにユーザーを作成

コピー元SQL Database(今回はolddatabase)にもユーザーを作成します。この時のロールはdb_ownerにする必要があります。以下のSQLクエリを実行します。

USE master;
CREATE USER newserveradmin FOR LOGIN newserveradmin;
ALTER ROLE "db_owner" ADD MEMBER newserveradmin;

3. SQL Databaseをコピー

SSMSやAzure Dara Studioなどでコピー先SQL Server(newserver)にログインします。ログインするユーザーは先ほどコピー元SQL Serverに作成したnewserveradminで。
そして以下のSQLクエリを実行します。

CREATE database newdatabase AS COPY OF oldserver.olddatabase
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?