SQL Azure

Windows Azure管理ポータルのデータベース管理で、「接続のテスト」ボタンをクリックすると、

Invoke 操作 ‘TestConnectionToDatabase’ に失敗しました。種類 ‘System.ServiceModel.DomainServices.Client.DomainOperationException’ の例外がスローされました。

とエラーが発生し、接続できない場合があると、MSDNフォーラム「Azure: problem with ‘Test Connectivity’」で報告されています。image

発見された再現方法は、管理者ログインにメールアドレスを指定すること。SQL Azureサーバーを作成時に、管理者ログイン名を指定します。その際に、メールアドレス、もっと言うと「@」が含まれていると再現します。「@」が含まれていても、次の画像を見ると分かる通り、バリデーションエラーにならないのです。

image

さて、真の不幸はここから。
「@」が含まれたログイン名では、SQL Azureデータベースに接続することができないのです。SQL Server Management Studioで接続しようとすると、

SNAGHTML752ae8

——————————

kxwb9.database.windows.net に接続できません。

——————————
ADDITIONAL INFORMATION:

Server name cannot be determined.  It must appear as the first segment of the server’s dns name (servername.database.windows.net).  Some libraries do not send the server name, in which case the server name must be included as part of the user name (username@servername).  In addition, if both formats are used, the server names must match. (Microsoft SQL Server、エラー: 40531)

ヘルプを表示するには http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&EvtSrc=MSSQLServer&EvtID=40531&LinkId=20476 をクリック

と、エラーが発生し接続することができません。

結論

SQL Azureデータベースサーバーを作成する際に、ログイン名に「@」を使用してはいけません。使用してしまった場合は、記念に残しておくか、サーバーごと削除してしまいましょう。

image

SQL Azure

Preview版が提供されているSQL Azure Data Syncサービスが、2012年4月2日にサービスアップデートされました。

image

  • デプロイした同期グループを更新できるようになりました。
    同期グループを動的に更新できるようになりました。詳細は、同期グループの編集(英語)を参照してください。
    ・データセットへの列の追加
    ・データセットへのテーブル追加
    ・データセットから列の削除
    ・データセットからテーブルの削除
    ・列のwidthの変更
    image
  • 同期グループをより簡単に管理できるように、ポータルに情報を追加しました。
    1. クライアントのエージェントバージョンを表示します。クライアントエージェントが最新バージョンでない場合、更新を推奨するメッセージをし、間もなくサポートが終了するエージェントバージョンの場合は警告メッセージ、エージェントがすでにサポートされていない場合はエラーメッセージを表示します。
    2. 60日以上、変更適用の失敗が原因で60日以上経過した同期グループに警告を表示します。
  • Entity FrameworkやNHibernateのようなORM(オブジェクトリレーショナルモデル)フレームワークとData Synacを一緒に使用した場合に発生する問題を修正しました。
  • エラーメッセージとステータスメッセージを改善しました。

 

参照情報

SQL Azure

クラウド間、クラウドとオンプレミス間のデータ同期をノーコーディングで実現するSQL Azure Data Syncは、現在Preview版が提供されています。
定期定期に更新が加えられ、最近では2012年1月にメジャーアップデートされています。

現在、SQL Azure Data Syncは、製品フィードバックを得るための実験段階で、本番運用では使用できません。ライセンス的にダメなのかは不明慮なのですが、公式サポートは提供されていません。つまり、本番環境で使用して、本番環境のデータが吹っ飛んだり、同期ミスで不整合が発生しても、サポート提供してないから自己責任だし、マイクロソフトは保障も復旧の手伝いもしませんよって段階です。
間際らしいのですが、SQL Azure Reportingは、同じくPreview版での提供ですが、公式サポートの提供が始まっています。

そんなSQL Azure Data Syncなので、使用したい人にとっては、一刻も早いリリースが待ち望まれるわけです。気になるリリース時期は、

If you mean Data Sync Service release date, from what I know it is likely in second half of this year, possibly in 3rd quarter.

Jin H. Microsoft(MSFT)
MSDNフォーラム:SQL Azure Sync release date

のようです。

ただし、フォーラムでのマイクロソフト社員の回答は、あくまでも個人的見解で公式情報ではないので、参考程度にとらえてください。

SQL Azure

Windows Azure書籍

Windows Azureについて書かれた書籍が、ここ最近立て続けに発売されています。年が明けてから発売されたものでも、次の3冊が発売されています。

書籍という定型・固定的な情報源と、進化の速いクラウドの相性が悪い部分が出てしまっています。上記の書籍3冊で共通して、「SQL Azureで日本語を使用するには・・・」と特別にピックアップして説明しています。実際、あえて説明する必要があるトピックだったのです。

しかし、2011年12月にリリースされた「既定の照合順序の変更」機能により、今でも通用するけど、あえてしなくても良い話となってしまいました。

2011年12月より前にSQL Azureで日本語を使用するには・・・。

従来、SQL Azureの照合順序は、「SQL_Latin_General_CP1_CI_AS」でした。
その為、日本語を格納するには次のような対応が必要でした。

  • varchar、char、textデータ型に日本語を格納するには、個別に日本語照合順序を指定する
  • nvarchar、nchar、ntext型のようなユニコード対応データ型を使用する
  • 日本語を格納する際には、Nプレフィックスを記述する(例:「N’日本語を格納’」)

現在、SQL Azureで日本語を使用するには

2011年12月に、データベースの既定の照合順序を指定できるようになりました。そのため、データベース作成時に、照合順序を変更しておけば普通に日本語を格納することができます。

照合順序を指定してデータベースを作成するには、SQL Azure管理ポータルを使用します。Windows Azure管理ポータルからデータベースを作成する時には、照合順序を指定できません。

SQL Azure管理ポータルで、データベースを新規作成するときに照合順序を「Japanese_CS_AI」を指定します。そうすると、日本語環境のWindows Serverに日本語版のSQL Serverをインストールしたときと同じ状態になります。

image

image

とはいえ・・・

これで、話が完結しないのが日本語。

JIS2004対応をするには、結局のところ、「nvarchar、nchra、ntextデータ型を使用して、Nプレフィックスを使用する」必要があるので、結局のところ、状況はあまり変わらないのでありました。

SQL Azure

課金と使用権を管理する目的で導入されているサブスクリプション間で、SQL Azureサーバを移動させられるようになりました。

次の図のようにLiveアカウントにサブスクリプションが紐づいています。たとえば、MSDNベネフィットのサブスクリプションと、パートナー契約のサブスクリプションを持っているとします。
現状は、MSDNサブスクリプション(A)に紐づいているSQL Azureサーバーがあります。

image

MSDN特典の無償期間が切れたタイミングで、パートナー契約のサブスクリプションBにSQL Azureサーバーを切り替えます。


サブスクリプションは、ライセンス・課金管理用の概念なので、サブスクリプションとの紐付けを変更しても、SQL Azureサーバー、DBへの接続情報は変わりません。サブスクリプション間を移動しても、SQL Azureサーバーを使用しているアプリケーションには影響がなく、何の対応も発生しません。

 

移動方法

① SQL Azureサーバーを別のサブスクリプションに移動させるために、Windows Azure管理ポータルにアクセスします。

メニューから「データベース」タブを選択し、サブスクリプションツリーからSQL Azureサーバーを選択します。

image

② サーバ情報の中央部のさりげない位置に「サーバーの移動…」ボタンが配置されていますので、ボタンをクリックします。
//なぜ、上部のメニューに配置せずに中央部の情報パネルにボタンを置いたのでしょうか・・・。

③ 下の図のようなダイアログが表示されますので、ドロップダウンリストから移動先のサブスクリプションを選択します。

image

④ はりきって「OK」ボタンを押してみます。

image

⑤ ダイアログが閉じて、一瞬でサブスクリプション間を移動しました。「本当に移動しちぇっていいの!!?」みたいな確認ダイアログは出ないので、ご注意を。

image

豆知識

サブスクリプション間の移動は、共同管理者もすることができます。

説明がしにくいのですが、
自分のサーバーを、共同管理者に任命されているサブスクリプションにサーバーを受け渡すことができます。
受け渡された人は、さらに別のサブスクリプションに移動させることができます。

もちろん共同管理者は、共同管理しているサブスクリプションのサーバーを、自分のサブスクリプションに移動させられます。

image

AさんとBさんが喧嘩して、BさんがいやがらせでAさんからサーバーを奪い取ってAさんの手が届かないサブスクリプションにサーバーを移動させちゃうなんてことが発生しますね(ぇ

参考情報