2016年3月25日

Azure AutomationでSQL Databaseからデータを取得してEメールで送信する

定期的にSQL Databaseからデータを取得してEメールで送信する必要があったので、試行錯誤しながら「Azure Automation」でやってみました。


やりたかった事


毎日1回(もしくは数時間に1回)SQL DatabaseにアクセスしてSQL文を実行し、結果を取得する。その結果が条件を満たす場合のみ特定の宛先にEメールを送信する。



1. Automationアカウントを作成する。





2. Runbookを作成する。






3. Runbookで実行するスクリプトを入力する。



スクリプトはPowerShellで作成する必要がある様です。

JavaScriptとかにも対応してくれると大変嬉しいのですが。^^)

今回作ったPowerShellスクリプトはこんな感じになりました。私の場合PowerShellを触る事はめったにないのですが、.NET Frameworkの機能が呼び出せるのでDBにアクセスしたりメールを送ったり、かなり色んな事が出来そうですね。






4. SQLサーバーとSMTPサーバーの認証情報を「資産」として登録する。


     

管理画面で「資産」として登録しておいた認証情報はスクリプトから

    $SmtpCred = Get-AutomationPSCredential -Name $SmtpCredName

のように呼び出して使う事が出来ます。上手い仕組みになっていると思いました。



5. Runbookをテスト実行する。


新ポータルのテスト実行用UIはかなり使いづらかったので、まだ現時点ではテスト実行には旧ポータルを使った方が良いのかも知れません。




6. Runbookを「発行」する。







7. Runbookが定期的に自動実行される様にスケジュールを設定する。



必要であればWebHookをトリガーにしてジョブが走る様に設定する事も出来る様です。



以上、大体こんな感じでやりたかった事が出来ました!

やってみた後で言うのもアレですが、Azure Automationはどうもどちらかと言うとAzure内のVM(や各種サービス)の起動・停止・設定変更やバックアップなどのプロビジョニングの自動化のために設計されたもののような気がして来ました。実際、提供されているテンプレートもそういうものが大半でした。そう考えるとスクリプトがPowerShell前提なのもうなずけます。

もしかすると今回の様なアプリケーション寄りのバッチ処理にはAzure App Serviceの「Web Jobs」の方を使った方が良いのかも知れません。Web Jobsの方はJavaScript(C#, BATなども)の実行も出来るみたいです。



参考URL:


PowerShellでSQL文の実行結果件数を取得してみました - Qiita
http://qiita.com/kurukurupapa@github/items/7f455b879e7c47372e3d

もりもりゲームブログ: Windows Power Shellから、ストアドプロシージャを使用する方法 http://morimorigameblogg.blogspot.com/2009/12/windows-power-shell.html

ワークフローでの Windows PowerShell コマンドの実行
https://technet.microsoft.com/ja-jp/library/jj574197.aspx

社内SEの徒然なる日記 powerShellでメールを送ってみた
http://harikofu.blog.fc2.com/blog-entry-2.html

Powershellでメールを送信する最も簡単な方法 | いろんなサーバー設定研究所
http://tech.lecume.net/power-shell/send-mail


2016年3月18日

8GB RAM + 256GB SSD + タッチ対応のラップトップPCで気になったもの(2016年3月)

HP Pavilion 15t (Customized)  
$739.99


Lenovo Yoga 3 
$749.99




ASUS ZenBook UX303UA 


Dell XPS 13 Touch 
$1,399.99




Visual StudioやAndroid Studio, Unityなどでアプリを開発するためなら、多分 8GB/256GB でCPUが Core i5 なら十分ではないかと思います。


最初に挙げた3つはそれぞれ10ドルずつの違いなので非常に迷いますね。


CPUがCore Mで良ければ Yoga 700 ($699.99) などさらに安い機種がいくつかありました。


しばらく前からWindowsストアアプリの開発用に1台欲しいなと思っているのですが、なかなか決断が付きません。。。








.

16GB RAM + 512GB SSD + タッチ対応のラップトップPCで気になったもの (2016年3月)


Lenovo Yoga 900 
$1,249.99
$1,499.00




HP Spectre x360 - 15t (Customized)
$1,489.99
$1,999.99

http://www.dell.com/us/p/xps-13-9350-laptop/pd?oc=dncwt5156s&model_id=xps-13-9350-laptop



ざっと見た限りでは Lenovo Yoga 900のコストパフォーマンスの良さが光っている様に感じました。

ディスプレイはQHD+(3200x1800)だし。


次に仕事用に買うならこれかな。


と思ったら ZenBook Pro はよく見るとグラフィックスがNvidiaだし解像度もCPUも少し上ですね。


仕事用ならむしろこっちかな。(笑)


いずれにせよ、MacBookProのほぼ半額で買えてしまうというのが、なんとも有り難い事です。









.