SQL Azure

今朝、Windows Azure Team BlogにSQL Azure 2011 Q4サービスリリースの記事が投稿され、晴れてSQL Azure 2011 Q4のリリースが正式リリースとなりました。6か所のDCにある数千サーバーへのリリースが伴うので実際に使えるようになる時間と、正式リリースを発表する時間がずれるのです。なんで、Azure Team BlogってBlogなのに役割が大きいのです。(Azure Teamブログの発表前に、日本のAzure Blogでサービスリリースが発表されていて驚きました・笑)

SQL Azure管理ポータルも刷新されて、利用頻度が高くなりそうなのですが相変わらずはまりポイントが残留しておりましたので、楽しく使用するのに知っておくべきことを紹介します。

SQL Azure管理ポータルの2種類の入口

SQL Azure 管理ポータルには実は入口が次の2つあります。

DB名がオプション

image

DB名がセット済み

image

入口別ログイン後画面

DB名を未入力でログイン

image

DB名を入力してログイン

image

わかりやすいように比較

image

結論

[blackbirdpie url=”http://twitter.com/#!/bell_kana/status/144955041420296193″]

SQL Azure管理ポータルへの2種類のアクセス方法

URL直接アクセス

Windows Azure管理ポータルの右隅に、SQL Azure管理ポータルへのURLが記載されています。

image

このURLをコピーして直接アクセスしてあげてください。

image

https://lx88a7fkwl.database.windows.net/ みたいなURLになっているはずです。

 

管理ボタンから接続

Windows Azure管理ポータルの上部に、管理ボタンがありますのでクリックしてあげてください。

image

するとDB名がセット済みになっている、
https://lx88a7fkwl.database.windows.net/?langid=ja#$database=nora5 みたいなURLでアクセスするはずです。

もし、DB名を消したい場合はURLから消してあげるか、次の方法を試してください。

[blackbirdpie url=”http://twitter.com/#!/bell_kana/status/144959049165848576″]

ちなみに、管理ボタンをクリックしてアクセスすると、ほぼ待合なくDB名がセットされた方にアクセスしちゃいます。

おまけ

SQL Azure管理ポータルの表示言語は、基本的にWindows Azure管理ポータルの設定を引き継ぐか、OSの言語を参照しています。でも結構、キャッシュ(クッキー?)が効くので、なかなか言語変更が反映されません。

また、右隅に残念な表示がありますが、ジャーマンのMVPが製品チームにフィードバックしていたので、そのうち修正される予定。「user」と「ユーザー」表示領域幅が違うのですよ。

image

Windows Azure Advent Calendar jp: 2011の13日目

http://atnd.org/events/22821

クリスマスまでの日数を数えるために、1日に1つ、穴が空けられるようになっているカレンダーです。転じて、技術系コミュニティで、クリスマスまでの25日間にTipsを1つずつ公開するイベントをAdvent Calendarと呼ぶそうです。

Windows Azureに関するネタをひとつ、特定の日に、自分のブログにアップロードしてもらうだけです。執筆順は、このイベントに参加した順です。最初の人が12月1日、2人目が12月2日…と続いていって、最後の人が12月25日です。アップロードしたら、このイベントのコメント欄にURLを貼り付けてください。

SQL Azure

SQL Azure Labに新たな試行サービス「Data Transfer」がリリースされました。
本サービスは、Windows Azure上にホストされたサービスで、ローカルのCSVからSQL Azureデータベースにテーブルを作成したり、Windows Azure Blobにデータをアップロードすることができます。

このサービスの目的は、クラウド上にデータを転送することです。ExcelファイルやCSVファイルをSQL Azureにロードすることができます。

Q&A

  • CSVファイル
    結構条件がシビアで、結局ちょっと試した範囲ではCSVのアップロードを成功させられず。文字コードとかちゃんと見たのですが。
  • Excelファイル
    シート名がロードした際にテーブル名に使用されます。
  • 日本語
    残念、文字化けします。Excelに日本語データを含んでいると、日本語を含んでるセルが文字化けします。
  • アップロード可能サイズ
    200MB未満

使用手順

1.https://web.datatransfer.azure.com/ にアクセスする。
image

2.SQL AzureにCSVまたはExcelファイルをロードしたい場合は、「SQL Azure」ボタンをクリックする。
Windows Live IDでログインする。

3.SQL Azureデータベースサーバ、データベース名、ユーザ名、パスワードを入力する。
なお、ユーザー名は、「ユーザ名@サーバー名」形式にする必要がある。(例)sqlazurejp@lx88a7fkwl
Nextボタンをクリックする。
image

4.アップロードするExcelファイルまたは、CSVファイルを選択する。
なお、今のところ200MB以下のファイルしかアップロードできません。

image

オプションを表示させる、文字コードや区切り文字、囲み記号を設定することができる。

image

5.ファイルを選択し、Analyzeボタンをクリックする

成功すると、次のような結果画面が表示される。

image

ちなみに、アップロードしたExcelファイルとロードされtたテーブル定義は次のようになる。主キー用にPid列が自動保管されている。
image
image

参考サイト

SQL Azure

imageSQL Server MVPのムッシュ小澤さんが「SQL Server 2012 RC0 の提供が開始されました」と報告されているのを見て初めてリリースを知りました。

早速、SQL Server 2012 RC0 Management StudioによるSQL Azure対応状況をチェックしてみましたので、簡単に展開します。今回は、概要編と言うことで各々のメニューで何ができるのかの簡単な紹介にとどめています。詳細は、続編を参照してください。

オブジェクトエクスプローラー

image

SQL Azureに接続し、オブジェクトエクスプローラーでSQL Azureサーバーに接続し展開したところです。

目新しいものとしては、「Federations」がフォルダーが登場。さらに、管理の下に「データ層アプリケーション」が登場してます。

Federationは、SQL Azure Federation対応のものでしょう。とはいえ、現時点ではデザイナーは提供されずクエリが表示されます。Federationはデータベースを分割配置するのに使用できるSQL Azureへ無限にスケールアウトできるリリースが近い機能です。

データ層アプリケーションは、Data-tier Applicationの日本語表記で、DAC Frameworkを使用します。今のところ、DAC Frameworkを使用したデータベースのエクスポート・インポート機能がWindows Azure管理ポータル(SQLとBlob間)とSQL Azure管理ポータル(SQLとローカル間)それぞれで提供されています。(現状、SQL Azureでは未対応っぽいです。)
おそらく、データ層アプリケーションが配置できるのだと思いますが、詳細はまだ追えてないので追々調査したいと思います。

SQL Azureサーバー、SQL Azureデータベースのタスク

SQL Azureサーバーのタスクとして、データ層アプリケーションの配置とImport Data-tier Application..の2つが追加されています。レポートには特にデフォルトでは何も用意されていません。。。。

image

SQL Azureデータベースへのタスクとして、Deploy Database to SQL AzureとExport Data-tier Application..、データ層アプリケーションの抽出、データ層アプリケーションとして登録の4種類が追加されています。

  • Deploy Database to SQL Azureは、既存のSQL AzureデータベースやSQL ServerデータベースからSQL Azureサーバー上に新たに作成する機能です。データベースの複製や移動がしやすくなります。内部的には、一旦bacpacとしてクライアントにファイルを生成し、そのファイルを使用して対象サーバーにデータベースを作成します。
  • Export Data-tier Application..は、SQL Azureデータベースをロカールにbacpacとしてデータベースをバックアップすることができる機能です。
  • データ層アプリケーションの抽出は、SQL Azureデータベースをdacpacとしてスキーマー構造をバックアップできる機能です。
  • データ層アプリケーションとして登録は、dacpacを作成し、それをサーバーに登録することができる機能です。紹介しておいて、申し訳ないのですが現状SQL Azureでは対応していないようです。

間際らしいのですが、データ層アプリケーション(もしくはData-tier Application、または、DAC Framework)にはbacpacとdacpacの2種類あります。dacpacはデータベースの構造を格納するファイルです。bacpacは、データベースの構造とデータの両方を格納するファイルです。

image

クエリエディターとデザイナー

さて気になるのがデザイナーの対応状況です。

image

これが結論です。まだ、現時点ではデータベースやテーブルのデザイナー機能は、SSMSでは提供されておりません。SSMS2008 R2と同様にクエリが提供される状況です。

さらにクエリエディタは、SQL Azureではインテリセンス機能もまだ用意されておらず、ちょびっと(イライラする程度には)もっさりしています。まぁ評価しているPCは、4年前のCore 2 Duo、メモリ4GB、グラフィックメモリ256MBなPCなので限界なのかもしれませんね。

現状の対応状況

SQL Azureへの対応は、まだまだ限定的です。

SQL Azureからdacpacやbacpacへのエクスポートは正常に動作しますが、SQL Azureへの配置は、基本的にどの機能でも失敗してエラーになります。原因は、SQL Azure対応していないから。
SQL Azureでは基本的にシングルバッチでなければならないのですが、インポート機能ではそれが考慮されていないため、「The CREATE DATABASE statement must be the only statement in the batch. (Microsoft SQL Server、エラー: 40530)」というエラーが発生してしまいます。

そして、やっぱり右クリックやタイピングがもっさりしていますね・・・・。

SQL Azure

注意事項

コピー元の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データベースをバックアップするを参照してください。

補足

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

SQL Azure

注意事項

コピー元の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データベースをバックアップするを参照してください。