【Azure for ITPRO】SQL Azure のデータベースを Create Database を使用してコピーする
SQL Azure 上のデータベースをバックアップしたい…でもオンプレミスにバックアップするのは時間がかかりすぎるし、どうせならば Azure 上にバックアップしたい…当然そう考えますよね。
プログラムを作れる人なら「簡単ジャーン」てなことですが、プログラムとは縁のない ITPRO はどうするか?
最も簡単なのは、Create Database に 「AS COPY OF」オプションを使用して実行する方法です。
さっそくやってみましょう。
何を使うか?選択肢としては、
- SQL Server 2008 R2 Management Studio
- sqlcmd.exe コマンド
- Project Houston (CTP1)
あたりですが、今回は手軽な sqlcmd コマンドを使ってみたいと思います。
SQL Server がインストールされているコンピューターでコマンドプロンプトを開いてください。
まずは、SQL Azure に接続します。
C:\>sqlcmd -U junichia@hta8lqsu49 –P password -S hta8lqsu49.database.windows.net -d master –N 1> |
「-U junichia@hta8lqsu49 」 SQL Azure に接続するためのIDを指定します。データベースを作成する権限をもったアカウントでなければなりません。@の後ろに書かれている hta8lqsu49 は SQL Azure のホスト名です。これを指定しないとエラーになりますので注意してください。
「–P password」 上で指定したアカウントのパスワードを指定します。
「-S hta8lqsu49.database.windows.net」 SQL Azure のサーバー名を FQDN で指定します。
「-d master」 SQL Azure のマスターデータベースを指定しています。SQL Azure の場合、データベースを作成するには master データベースに接続しなければなりません。また、SQL Azure では UE コマンドがサポートされないため、USE AdventureWorks などと入力すると「USE statement is not supported to switch between databases. Use a new connection to connect to a different Database.」といったエラーメッセージが表示されるので注意してください。
「–N」 通信を暗号化するために指定しています。SQL Azure では暗号化通信が必須となります。
次に複製先のデータベースを作成します。ただし、ただ単に作成するのではなく、「AS COPY OF」を使用して既存のデータベースを複製しましょう。
今回は、複製元 として hta8lqsu49 というサーバーにある AdventureWorks というデータベースを指定しています。複製先は、AdventureWorks_tmp です。
1> Create Database AdventureWorks_tmp as copy of hta8lqsu49.AdventureWorks 2> go |
クエリーを実行しても、特にメッセージが表示されるわけではありません。
複製はバックグラウンドで静かに行われます。
複製の状態を確認するには、sys.databases に対して、以下のようにクエリーを入力します。「COPYING」は「複製中」を意味します。
1> select state_desc from sys.databases where name = 'AdventureWorks_tmp' 2> go state_desc ------------------------------------------------------------ COPYING (1 行処理されました) |
複製が終了すると、ステータスは「ONLINE」に変更され、複製元のデータベースと同様に利用が可能になります。
1> select state_desc from sys.databases where name = 'AdventureWorks_tmp' 2> go state_desc ------------------------------------------------------------ ONLINE (1 行処理されました) 1> |
どうでしょう?
とても簡単ですよね。
残念ながら、現時点ではバックアップのスケジューリングを構成することはできませんが、今後提供される予定になっています。
ちなみに、Welcome to SQL Azure Labs で公開されている「SQL Azure Data Sync Service」を使用すると、データベース間の「同期」をスケジューリングすることができます。現在”パブリックプレビュー”という状態で公開されていますので、こちらも試してみてください。