都内で働くSEの技術的なひとりごと / Technical soliloquy of System Engineer working in Tokyo

都内でサラリーマンやってます。SQL Server を中心とした (2023年からは Azure も。) マイクロソフト系(たまに、OSS系などマイクロソフト以外の技術も...)の技術的なことについて書いています。日々の仕事の中で、気になったことを技術要素関係なく気まぐれに選んでいるので記事内容は開発言語、インフラ等ばらばらです。なお、当ブログで発信、発言は私個人のものであり、所属する組織、企業、団体等とは何のかかわりもございません。ブログの内容もきちんと検証して使用してください。英語の勉強のため、英語の

あー、最近ブログ書いてないなぁとふと思ったので、記事書いてみた

 お久しぶりです。最近、色々と忙しくて記事が全然書けていませんでした。新しい技術にも全くキャッチアップできず、日々雑な仕事ばかりしていると、気持ちがすさんでいきますし、技術力が下がっていく一方です。11月には Tech Summit があります。このようなカンファレンスにも出ていないと、モチベーション保てないです....
f:id:koogucc11:20170815095539p:plain
Microsoft Tech Summit 2017 | インフラエンジニア、アーキテクト、IT 戦略立案に関わる皆様の為の技術カンファレンス - Microsoft Events & Seminars

 さて、気を取り直して...最近、SQL Server Management Studio 17.2 がリリースされてました。
Download SQL Server Management Studio (SSMS) | Microsoft Docs

 New in SSMS: Performance Dashboard built-in だそうなので、ちょっと見てみましょう。
blogs.msdn.microsoft.com

 ということで、17.2 をインストール。
f:id:koogucc11:20170815013425p:plain

 下図のようにクリックします。
f:id:koogucc11:20170815093659p:plain

 パフォーマンスダッシュボードが表示されます。日本語化けてますが、気にせず使いましょう。
f:id:koogucc11:20170815093900p:plain

 CPU の高いクエリを抽出したりできます。棒グラフをクリックすると、
f:id:koogucc11:20170815093920p:plain

 実際のクエリを参照できます。便利ですね。
f:id:koogucc11:20170815093942p:plain

 dmv、dmf に関してまだあまり理解していない!という方にはお勧めです。下図のように SQL Server Profiler 等を用いて、どのようなクエリが発行されているかを参照するのも勉強になるかもしれません。
f:id:koogucc11:20170815094911p:plain

 働きすぎ、社畜やん。

社畜のススメ (新潮新書)

社畜のススメ (新潮新書)

.NET Core を勉強してみる

 最近連日暑いですね。クーラーが苦手なのと、扇風機が一つ壊れたので二つゲットしました。寝室用と、

 リビング用です。

 最近の扇風機は高機能ですね。首振りの範囲が指定できたりします。360度全方向に首振りもしてくれます。
f:id:koogucc11:20170708181920j:plain

 次のお仕事では .NET Core を使用する予定です。ということで、今まで触れたこともなかった ( 最近あまりコーディングの興味が薄れていた ) ので、少しお勉強してみます。

 CentOS,Ubuntu での構成もアリな気がしますが、結局有償サポートとか組んでしまうとイニシャルはいいんですが、保守費用は結構高額になるんですよね。結局使い慣れた Windows Server でやったほうが、技術者育成の面とか、コスト面とかでメリットがありそうです。

最近、やたらと〇〇横丁なるものができています。
retrip.jp

蒲田バル横丁。今年5月オープン。
food-stadium.com

川崎のれん街 ほのぼの横丁。今年6月オープン。
www.kanaloco.jp

恵比寿横丁。これ昔からありますね。
jion.tokyo

澁谷のんべい横丁。これは最近でしたっけ?
www.nonbei.tokyo

ASP.NET Core!!

ASP.NET Core 2 High Performance - Second Edition

ASP.NET Core 2 High Performance - Second Edition

DBCC MEMORYSTATUS の結果を見ていてふと思い出したことがあったので記事書いてみた

 昨日は子供と遊び疲れて早々に寝てしまい、5時前に起きてしまいました。ということで....記事書きます(笑) DBCC MEMORYSTATUS って出力結果が非常に長いですよね。目的の結果を探すのが非常に面倒です。
f:id:koogucc11:20170605080429p:plain

 ゲートウェイでクエリがコンパイルされている数を把握するのにも、かなりスクロール(赤枠を参照)する必要があります。
f:id:koogucc11:20170605081054p:plain

 SQL Server 2016 以降、統計情報などの参照も dmv に徐々に移行されており、ゲートウェイの情報も dmv に移行されていました。下記のクエリを SQL Server Management Studio で実行してみましょう。

SELECT 
    * 
FROM 
    sys.dm_exec_query_optimizer_memory_gateways

f:id:koogucc11:20170605081349p:plain
 
 DBCC コマンドから出力される結果を dmv に移行してくれるのはいいですね。調査用クエリなどの作成が容易になるので非常にありがたいです。

 キャンプ向けに AC 電源欲しいんですよね。

 それか、ノートパソコンの給電用にも使えるように持ち歩けるものがいいかなぁ。

Microsoft Flow とそのスマフォアプリを試してみる

 週末はいい天気になりました。昨日は一日運動会でグッタリ、今日は朝から子供の習い事の送迎係です(笑)。お迎えまで少し時間があるので、待ち時間に Microsoft Flow を試してみました。
flow.microsoft.com

 どのようなものか把握していないので、早速お試ししてみました。Microsoft Flow のスマフォアプリでボタンをクリックすると、その時間をエクセルに記録し、スマフォアプリに通知するといった動作をします。
flow.microsoft.com

 早速試してみましょう。

  • テンプレートを選択し、続行をクリックします。
    f:id:koogucc11:20170521105034p:plain
  • エクセルでテーブルを作成します。ここでは、OperatingTime というテーブル名を付けています。
    f:id:koogucc11:20170521112927p:plain
  • OneDrive にアップロードします。場所は適当でかまいません。
    f:id:koogucc11:20170521105415p:plain
  • OneDrive にアップロードしたエクセルファイルとそのテーブル名を指定します。
    f:id:koogucc11:20170521105555p:plain
  • テーブルに対して、型を指定します。
    f:id:koogucc11:20170521105915p:plain
  • 通知の設定を行い、完了をクリックします。
    f:id:koogucc11:20170521111145p:plain
  • スマフォアプリで、『稼働時間を追跡する』をクリックします。f:id:koogucc11:20170521110316p:plain
  • 2,3秒で処理の完了が通知されます。
    f:id:koogucc11:20170521110430p:plain
  • エクセルに記録されたかを Excel Online で参照します。きちんと記録されていますね。
    f:id:koogucc11:20170521111203p:plain

 そろそろ、お迎えの時間です。いいサービスですね。様々な WebAPI など結びつけることで、面白いサービスが構築できそうですね。構築するのに大した時間もかかりませんし、お手軽です。まさにクラウドといったサービスの一つですね! ( このようなサービスが欲しいんですよね。レガシーがどうとか、どうでもいいのです。パブリッククラウドで競争するなら、このようなサービスを追加しないと無理なので。(独り言) ) さて、お迎えに行ってきます!

Microsoft Flow のドキュメントはこちらです。

そろそろキャンプシーズン。新たなアイテムを買おう。ワゴンの種類多いなぁ。迷うわ。

コールマン アウトドアワゴン 2000021989

コールマン アウトドアワゴン 2000021989

Microsoft Azure のスマフォアプリを使ってみる

 Microsoft Azure への接続には、通常ポータルを使用しますが、仮想サーバを電車に乗っているときに起動するには操作が少し大変です。
f:id:koogucc11:20170520184847p:plain

 そこで電車の中でも難なく Azure の操作をすることができるのが、Microsoft Azure アプリです。
play.google.com
f:id:koogucc11:20170520184138p:plain

 マイクロソフトアカウントでログインします。
f:id:koogucc11:20170520185225p:plain

 パスワードを入力します。
f:id:koogucc11:20170520185327p:plain

 二要素認証でアカウントを保護してますよね?
f:id:koogucc11:20170520185442p:plain

 アカウント、サブスクリプションの情報が参照できます。 
f:id:koogucc11:20170520191335p:plain

 すべてのリソースが表示されます。え?これ使いにくいわ...
f:id:koogucc11:20170520185825p:plain

 カテゴリ別に参照できます。そりゃ当然か。
f:id:koogucc11:20170520191518p:plain

 通知情報も参照できます。
f:id:koogucc11:20170520191757p:plain

 Cloud Shell!! これは使ってみたい!
f:id:koogucc11:20170520191917p:plain

 仮想マシンを起動してみましょう。仮想マシンを選択し、Start をクリックします。
f:id:koogucc11:20170520192115p:plain

 起動できました。Connect をクリックすることで仮想マシンに接続することができます。
f:id:koogucc11:20170520192322p:plain

 Remote Desktop もインストールしておきましょう。
f:id:koogucc11:20170520192441p:plain

 確認画面が表示されます。
f:id:koogucc11:20170520192707p:plain
 
 User Name と Password を入力し、Connect をクリックしましょう。
f:id:koogucc11:20170520192822p:plain

 接続できました。
f:id:koogucc11:20170520193030p:plain

 デバイス別に最適化されたツールが整備されているのは素晴らしいですね。

土曜日の夜に仕事するのやだなぁと思って、気晴らしついてでに MSSQL Tiger Team の SQL Server 2017 Showplan enhancements を確認してみた

 SQL Server 2017 で実行プランの機能追加がありました。
blogs.msdn.microsoft.com

 早速、SQL Server 2017 で下記のクエリを実行してみましょう。

SELECT
    soh.*,
    sod.*
FROM
    Sales.SalesOrderHeader soh
    INNER JOIN
        Sales.SalesOrderDetail sod
    ON  sod.SalesOrderID = soh.SalesOrderID
WHERE
    CustomerID = 29565

f:id:koogucc11:20170513222920p:plain

 プリパティからオプティマイザが使用している統計の情報が参照できるようになっています。
f:id:koogucc11:20170513223300p:plain

<optimizerstatsusage>
    <statisticsinfo database="[AdventureWorks]" schema="[Sales]" table="[SalesOrderHeader]" statistics="[PK_SalesOrderHeader_SalesOrderID]" modificationcount="0" samplingpercent="100" la14-07-17t16:11:30.67="La14-07-17T16:11:30.67">
    </statisticsinfo>
    <statisticsinfo database="[AdventureWorks]" schema="[Sales]" table="[SalesOrderDetail]" statistics="[_WA_Sys_00000002_44CA3770]" modificationcount="0" samplingpercent="68.2155" lastu05-13t20:28:34.77="LastU05-13T20:28:34.77">
    </statisticsinfo>
    <statisticsinfo database="[AdventureWorks]" schema="[Sales]" table="[SalesOrderHeader]" statistics="[IX_SalesOrderHeader_CustomerID]" modificationcount="0" samplingpercent="100" last-07-17t16:11:32.41="Last-07-17T16:11:32.41">
    </statisticsinfo>
    <statisticsinfo database="[AdventureWorks]" schema="[Sales]" table="[SalesOrderDetail]" statistics="[PK_SalesOrderDetail_SalesOrderID_SalesOrderDetailID]" modificationcount="0" sampl67.8454="Sampl67.8454">
    </statisticsinfo>
</optimizerstatsusage>

 クエリが予想したパフォーマンスが出ていない、インデックスを使用していないときに統計情報の最終更新時間が古すぎるとか、サンプリングが低すぎるなどが起因していることはよくあることです。実行プランに使用統計の情報が出るだけでも、パフォーマン調査の効率が上がりそうですね。それ以外にも、CPU Time や WaitStats の情報も出力されます。
f:id:koogucc11:20170513224157p:plain

<waitstats>
    <wait waittype="PAGEIOLATCH_SH" waittimems="9" waitcount="26">
    </wait>
</waitstats>
<querytimestats cputime="2" elapsedtime="11">
</querytimestats>

 これは非常に助かる、いい機能追加ですね。

なんとなく、タバスコ全種類買ってみたくなった。