1.21 jigowatts

Great Scott!

Azureのサポートから怪しい連絡が→正規の連絡でした!

はじまり

Microsoft Azureを契約して1週間程経った頃だったと思います。自宅にMicrosoftを名乗る女性から電話がありました。

電話を受けた家族の話では、私が不在だったため改めてメールで連絡するとのことだったが、とてもMicrosoftのような大企業とは思えないような話し方だったそうです。

この時、春だし新人か代理店だろうとあまり気にしてはいませんでした。


その後3日くらい経ってからメールが来ました。

??様,
クラウドを始めることは、時に難しいことがあります。技術的なハウツーの問題に直面されているかもしれません。アーキテクチュアルデザインについて意思決定される必要があるかもしれません。ワークロードを移すことの長所と短所を検討されているかも知れません。いつ使用すべきかについて検討されているかもしれません。- しかし心配される必要はございません。セールストーク無しで、お客様のお力になれます。
クラウドテクノロジーに焦点を当てたMicrosoft プロダクト・チームの一員として、価格構成に関する質問または、技術的なアシスタンスなど、生産環境へと至るまでのサポートを、無料にてご提供させて頂きます。
(略)

あれ、宛名が文字化け?してるし、機械翻訳っぽい文章!

記載されている住所はMicrosoft本社(アメリカ)だし、張られているリンクも怪しげなドメインですよ。

先日の家族の話と合わさり、これはフィッシング詐欺なのではと思い、ソースを見てみるとメール配信サービスで一斉配信されているようでしたが私の知識ではそれ以上のことはわからず。

Azureの管理ポータルからサポート要求

Azureのコールセンターに連絡しても電話は繋がらないので、管理ポータルからサポート要求で問い合わせてみました。

するとすぐにレスポンスがあり、調べて明日の朝いちばんで担当者から連絡してくれるとのこと!

そして約束通り担当者の方から連絡があり、セールスチームからの連絡だということ、困ったことがないかなどのフォローのためであること、メールの文面にあった担当者が在籍していることを丁寧に教えていただきました。
ちなみにこのやり取りは全て日本Microsoftの方。


しかしサポートは受けられず

これで安心して、サポートの件についてメールでやり取りできます!

ということで連絡を取ってみたところ、開発予定のプロジェクトについて担当者や関連リンクを紹介頂けるとのことでした。

技術選定のためのプロジェクトであること、有益な技術情報の紹介をしてほしいと伝え、さらにプロジェクトの詳細な情報を伝えるなど何回かやり取りの末、本番環境に移行前提でない場合サポートできないということで以降連絡がなくなりました((((;;´Д`;;;))))

なんともモヤモヤした出来事でした。。。

まとめ

なんか色々言いたいことはあるんですが、私が期待しすぎたというか、いいように捉えすぎたんでしょうね。そうかもしれませんが、紛らわしいYO!

きっと無料試用版サブスクリプションの段階でAzureの具体的な使用が決まっている場合はサポート受けられるのでしょう。

Azure SQLデータベースに接続 アプリ編

概要

GWにリリースしたシステムのバグ修正や仕様調査とかの対応に追われる一週間でした!

ということで、前回の続きでアプリからAzure SQLデータベースに接続してみます。

環境

Visual Studio 2015

ADO.NETで接続

まずはこちらのサンプルのとおりにコンソールアプリから接続してみます。

static void Main(string[] args)
{
    using (var connection = new SqlConnection(
        "Server=tcp:voyagerprogram.database.windows.net,1433;Data Source=voyagerprogram.database.windows.net;Initial Catalog=voyager01;Persist Security Info=False;User ID={your_username};Password={your_password};Pooling=False;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
        ))
    {
        connection.Open();
        Console.WriteLine("Connected successfully.");

        Console.WriteLine("Press any key to finish...");
        Console.ReadKey(true);
    }
}


前回すでにクライアントIPを許可してあるのでローカルからデバッグ実行で接続できました。

Connected successfully.
Press any key to finish...


configファイルに書く場合もそのまま接続文字列のとこにコピペすればOKですね!

<connectionStrings>
    <add name="ConnectionString" connectionString="{接続文字列}" providerName="System.Data.SqlClient"/>
</connectionStrings>

Entity Frameworkで接続

次にASP.NET WebアプリケーションでEntity Framework(version 6.1.3)から接続してみます。
f:id:sh_yoshida:20160521195839p:plain

ウィザードに従ってデータベースファーストでモデルを作成します。
f:id:sh_yoshida:20160521195918p:plain

コントローラのIndexメソッドはこんな感じ。ライフタイム短いので簡単なMVCのWebアプリです。
Azure SQLデータベース上のAdventureWorksからProductのデータを10件抜いてきます。

public ActionResult Index()
{
    IEnumerable<Product> model;
    using (var context = new voyager01Entities())
    {
        model = context.Products.Take<Product>(10).ToList<Product>();
    }

    return View(model);
}

これもローカルからちゃんと接続できて表示されました。
f:id:sh_yoshida:20160521225913p:plain


Azure App Serviceから接続

Azureに公開しても大丈夫ですね。さっきと同じでわかりにくいですが、URLがazurewebsitesになってます!
f:id:sh_yoshida:20160521201607p:plain

ファイアウォールの設定でIPの設定が必要なのかと思ってましたが、[Azure サービスへのアクセスを許可]がオンになっていればWeb AppsからSQLデータベースに接続できるようです。
f:id:sh_yoshida:20160521233431p:plain

デフォルトでオンになってました。悩んで損した!


sh-yoshida.hatenablog.com
sh-yoshida.hatenablog.com

Azure SQLデータベースに接続

概要

Microsoft Azureの無料試用版サブスクリプションを契約して早2週間が経過してしまいました!もっとぶん回してみたかったのですが全然できてない、時間ない、焦る!

ということで、今回はAzureのSQLデータベースを利用してみます。

Azure SQLデータベースサービスはAzure上のSQL ServerということでPaaSですね。VisualStudioからも作成できたのですが、価格レベルとかが選べず、細かい設定などは後で管理ポータルからやってねって感じだったので、最初から管理ポータルで作成しておくことにしました。

SQLServerの新規作成


Azureの管理ポータルにログインしたら、ハブメニューからSQLデータベースを開き[追加]を選択します。
f:id:sh_yoshida:20160514225201p:plain

データベース名などを入力していきます。今回はソースにAdventureWorksのサンプルデータベースを選択しました。
f:id:sh_yoshida:20160514225213p:plain

サーバーの構成では新規作成しました。この工程はDBサーバーを構築してSQLServerインスタンスを作成してる感じですかね。
f:id:sh_yoshida:20160514225226p:plain

サーバーの構成から戻って、デフォルトの価格レベルを[Basic]に変更しました。一番安くてこの値段なので、無料試用版サブスクリプションの有効期限が切れたらお金払わないとデータベースは使えませんね。。月600円程度であれば払っちゃおうかなぁという気にもなりますが、機能的に十分なのか今後検証してみたいです。
f:id:sh_yoshida:20160514225243p:plain

作成ボタンを押して10分くらいでSQLデータベースが利用できるようになりました!サーバー用意してSQLServerインストールしてってことを考えると恐ろしく早いですね。
f:id:sh_yoshida:20160514225429p:plain

ファイアウォールの設定

データを保護するため、SQL Database ファイアウォールは、どのコンピューターに権限を持たせるかを指定するまで、SQL Database サーバーへのすべてのアクセスを遮断します。ファイアウォールは、各要求の送信元 IP アドレスに基づいてデータベースへのアクセス権を付与します。

SQL データベース ファイアウォールの構成 | Microsoft Azure

基本的にすべてのIPをはじくので、開発時はローカルなどから接続できるように許可する必要があるようです。
そのためファイウォールの設定でクライアントIPアドレスを登録してあげるのですが、ファイアウォールの設定がどこにあるのかわかりにくい!

SQLデータベースの画面でサーバー名のとこを選択します。
f:id:sh_yoshida:20160514225257p:plain

そうするとSQL Serverの画面が開き、[ファイアウォールの設定の表示]で設定ができます。[クライアントIPの追加]を押下したら必ず[保存]を。クライアントIPアドレスが動的に変わる場合は範囲指定しておきましょう。
f:id:sh_yoshida:20160514225306p:plain

SQL Server Management Studioから接続

SSMSから接続するのに必要な情報は、サーバー名、サーバー管理者(ログイン)、パスワードです。これらの情報はそろっているので早速接続してみます。
f:id:sh_yoshida:20160514225453p:plain

作成したデータベースにAdventureWorksサンプルデータベースの内容が登録されてますね!
f:id:sh_yoshida:20160514225518p:plain

次回はアプリからAzure SQLデータベースに接続してみたいと思います。
SQLデータベース画面から[データベース接続文字列の表示]でADO.NETODBCの接続文字列がコピーできるので、これを使うだけでOKそうですが(。•̀ᴗ-)✧
f:id:sh_yoshida:20160514225442p:plain