SQL Azureデータベースでログイン名に絶対に使用してはいけない文字
Windows Azure管理ポータルのデータベース管理で、「接続のテスト」ボタンをクリックすると、
Invoke 操作 ‘TestConnectionToDatabase’ に失敗しました。種類 ‘System.ServiceModel.DomainServices.Client.DomainOperationException’ の例外がスローされました。
とエラーが発生し、接続できない場合があると、MSDNフォーラム「Azure: problem with ‘Test Connectivity’」で報告されています。
発見された再現方法は、管理者ログインにメールアドレスを指定すること。SQL Azureサーバーを作成時に、管理者ログイン名を指定します。その際に、メールアドレス、もっと言うと「@」が含まれていると再現します。「@」が含まれていても、次の画像を見ると分かる通り、バリデーションエラーにならないのです。
さて、真の不幸はここから。
「@」が含まれたログイン名では、SQL Azureデータベースに接続することができないのです。SQL Server Management Studioで接続しようとすると、
——————————
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データベースサーバーを作成する際に、ログイン名に「@」を使用してはいけません。使用してしまった場合は、記念に残しておくか、サーバーごと削除してしまいましょう。
ディスカッション
コメント一覧
ログインIDに@が含まれてしまった場合には test@example.com@servername としてSQL Azureのサーバー名を付けてあげれば接続できるかとおもいますがどうでしょうか?
もちろん含めないことに越したことはないのですが、自分で作ったものでない場合そういうことがありますね。
おおお!!
さすがMayuki先生。
ログインできました!
ふむ、仕様なのか仕様バグなのか悩ましい限りです。
SSMSもWindows Azureポータルも基本的には暗黙的に@サーバー名を補完してくれるのですが、単純な正規表現チェックしかしてないからはじかれちゃうのですね。
勉強になりました!