SQL Server 2017 RC1 が出ました!

とりあえずリンクだけ
First release candidate of SQL Server 2017 now available | SQL Server Blog

そろそろちゃんと触らないとダメですね~。

What's new in SQL Server 2017 | Microsoft Docs

WinForm で InitializeComponent の中で オブジェクト初期化子を書くと デザイナー でエラーが出る

タイトルの通り。 

久々に WinForm を触る機会があってハマったのでメモ。

オブジェクト初期化子はこれのこと。
オブジェクト初期化子とコレクション初期化子 (C# プログラミング ガイド) | Microsoft Docs

private void InitializeComponent()
{
    this.button1 = new System.Windows.Forms.Button();
    this.SuspendLayout();
    // 
    // button1
    // 
    this.button1.Location = new System.Drawing.Point(34, 148);
    this.button1.Name = "button1";
    // this.button1.Size = new System.Drawing.Size(138, 57);
    this.button1.Size = new System.Drawing.Size
    {
        Width = 138,
        Height = 57
    };
    this.button1.TabIndex = 0;
    this.button1.Text = "button1";
    this.button1.UseVisualStyleBackColor = true;
    ...
}

こんな風に オブジェクト初期化子を書いて Form の デザイナーを開くとこんな エラー が出る。

メソッド 'InitializeComponent' を解析できませんでした。パーサーによってエラー 'オブジェクト参照がオブジェクト インスタンスに設定されていません。' が報告されました。エラーの原因と考えられるものをタスク一覧で調べてください。 
場所 Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomParser.OnMethodPopulateStatements(Object sender, EventArgs e)
場所 System.CodeDom.CodeMemberMethod.get_Statements()
場所 System.ComponentModel.Design.Serialization.TypeCodeDomSerializer.Deserialize(IDesignerSerializationManager manager, CodeTypeDeclaration declaration)
場所 System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager manager)
場所 Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager)
場所 System.ComponentModel.Design.Serialization.BasicDesignerLoader.BeginLoad(IDesignerLoaderHost host) 

InitializeComponent を手で修正する方がアレですが、まあ気をつけて。

6/20(火) SQLWorld★大阪#42 開催します

SqlWorld :: SQLWorld★大阪#42 開催します。24回目の平日夜開催で、前回同様 ハンズオン 形式行う予定です。

【日時】
2017年6月20日(火曜日) 19:00~21:00
 

【イベント概要】
SQLWorld 24回目の平日夜開催~。今回も、みんなで SQL を書いてみようというハンズオン企画です!ブラウザがあれば参加出来るようにしていますので、iPad 等のタブレットでも大丈夫です。
 

【会場】
フェンリル株式会社さま大阪本社 http://www.fenrir-inc.com/
〒530-0011 大阪府大阪市北区大深町 3番1号 グランフロント大阪タワーB(オフィス)
 

【参加費】
無料
 

【持ち物】
パソコン/タブレット (DB のインストールは不要です。)
 

【参加可能人数】
13 人
 

お題に沿って、SQL を書いてみようという勉強会です。是非ご参加を~。

開催回数は増えていっていますが、続き物というわけでは無いので初めて参加される方でもお気軽にどぞー。

de:code 2日目のメモ

de:code 2017 2日目のメモ

セッションは未だ手元にスライド落としてないのであやふやかも。 メモなので、セッションの内容以外のことも書いてます。

ダウンタイムを最小に!~Azure における障害/災害に耐えうるアーキテクチャ設計のポイント~ #DI13

Azure での可用性や回復性(Resiliency)の構成のお話し

障害はいつでも起きる
ソフトのバグ、ハードが壊れる、人のミス
回復性(Resiliency) 落ちてもすぐ復旧する

  • RTO:Recovery Time Objective 目標復旧時間
    • 復旧するまでの時間
  • RPO:Recover Point Objective 目標復旧時点
    • 復旧したときにどの時点までのデータを復旧出来るか(復旧したときに最新のデータが失われて、巻き戻ってる時間)

RTO、RPO を低くするには、コストと複雑さのバランス
複雑になるし、コストも掛かるので、RTO/RPO はビジネス判断

クラウド向けの設計

  • SPOF(単一障害点)なし
  • ステートレス
  • 疎結合
  • スケールアップよりスケールアウト

MTTR(Mean Time To Repair 平均復旧時間) 障害のための設計
クラウドは一時的な障害/エラーが多い
SLA 100% ではないから回復性が大事、リトライとかもね
複合SLA、サービスを組み合わせた時は、SLA を掛け算
例:99.99 * 99.9 = 99.8…
Designing resilient applications for Azure | Microsoft Docs

シングルリージョンのリスクを許容出来なければマルチリージョン構成を検討
ペアリージョン (東日本/西日本)
ビジネス継続性と障害復旧 (BCDR): Azure のペアになっているリージョン | Microsoft Docs
どんな障害があるか?FMA(Failure mode analysis)
Failure mode analysis | Microsoft Docs

アプリはいいけど、データレプリケーションは難しい

カオスエンジニアリング 障害をエミュレートして問題ないか検証する。
クラウドのリージョンを丸ごと落とす過酷な試験を実現する「Chaos Kong」、Netflixが発表。「カオスエンジニアリング」の指針も表明 - Publickey
GitHub - Netflix/SimianArmy: Tools for keeping your cloud operating in top form. Chaos Monkey is a resiliency tool that helps applications tolerate random instance failures.

  • 障害注入テスト
  • 負荷テスト
  • ソーク(Soak)テスト

Azure のサービスでは

  • HA(可用性):複数立てて LB。だいたいのサービスでやってる
  • DR(災害復旧):やってないサービスもある、サービスレベルで追加とか

HA が同一リージョン、DR がマルチリージョン って認識でよさげ。

Azure Storage

  • GRS
    • レプリケーションのタイミングの非一貫性
      • VM の Disk が2ファイルあって、両方の動機が取れていないと VM が立ち上がらない
      • フェールオーバーを制御出来ない
      • レイテンシの SLA がない。15分を「目標」に。実際そこまで掛かってないらしい
  • RA-GRS
    • 読み書きある場合、プライマリは強い一貫性、セカンダリの読取は結果整合性
      • 同期ではないから、セカンダリにはそのうち反映される

Azure Storage のデータ レプリケーション | Microsoft Docs
Azure の読み取りアクセス geo 冗長ストレージ (RA-GRS) を使用した高可用性アプリケーションの設計 | Microsoft Docs

後で聞いたけど、GRS の Storage を障害発生時に RA-GRS への切り替えは出来ないと思ってた方が良いとのことー。
普段は GRS で節約しといて、障害が起きたら RA-GRS にして、別リージョンを読取可能にして AzCopy かでコピーして立て直しみたいなのは出来ない。
そういう用途なら、普段から RA-GRS にしてる方が安心。

SQL Database

  • ペアリージョンに1時間に1回地理リストア
  • アクティブ地理レプリケーション
    • sp_wait_for_database_sync で同期を待つ
  • 自動フェールオーバーグループ (preview)

バックアップから Azure SQL Database を復元する | Microsoft Docs
フェールオーバー グループとアクティブ geo レプリケーション - Azure SQL Database | Microsoft Docs
sp_wait_for_database_copy_sync (Azure SQL データベース)
Azure SQL Database を使用した高可用性サービスの設計 | Microsoft Docs

App Service

  • マルチリージョンで Traffic Manager で振り分け
    • Traffic Manager の監視の時間もあるので、死んでもすぐ切り替わるわけではない

Azure Traffic Manager エンドポイントの監視 | Microsoft Docs

VM

Mesosphere : Microservices meet Fast Data on Azure #DO16

英語セッション Mesos ってどっかで聴いた憶えがあったので参加しました。

Microservice ってなんぞ?

  • Flexible
  • resilient
  • efficient
  • robust
  • individually
  • scalable

Fast Data Batch => Micro-batch => Event processing とデータの処理が速くなっていく

SMACK Stack

  • Spark(Streaming) : stream processing
  • Mesos : cluster orchestrator
  • Akka : actor for reacting analysys
  • Cassandra : storage
  • Kafka : MQ(message queue)

Apache Spark™ - Lightning-Fast Cluster Computing
Apache Mesos
Akka
Apache Cassandra
Apache Kafka
こうみると Apache 多い。。

Queue ってどんなのあるの?
Queues

Install | DC/OS
DC/OS はリソースを柔軟にコントロールする感じ?
第1回 DCOSを使ってみよう:Mesosphere DCOSでつくるクラウドアプリケーション|gihyo.jp … 技術評論社 GitHub - dcos/examples: DC/OS examples

こんな流れのデモ
EventSource => Kafka => Spark => Elasticsearch => Java Map App

Service Operations

  • Configuration Updates (Scaling, re-configuration)
  • Binary Upgrades
  • Cluster Maintenance (Backup, Restore, Restart)
  • Monitor progress of Operations
  • Debug any runtime blockages

もっかいスライド見直したいー。

Azure * [Blockchain + ML/Cognitive + Fintech + ワークスタイル変革] 全部入り! #LS13

ランチセッション、Blockchain のお話しってことだったので参加ー。
製品説明等であんまり印象残ってない。

CVC (Cloud Video Conference) | Microsoft Azure(マイクロソフトアジュール)のプロによる導入支援から24時間365日運用監視までフルマネージドサービスcloud.config
WebRTC 使ってチャット? 出来る。
Blockchain に書き出しているので、改竄が難しい。

事例紹介
北國銀行、営業力強化に向けて、Windows 10 を全面導入 - News Center Japan
北國銀行の方が登壇されていて、銀行もクラウドしかないって言ってました。

ご注文は Linux + Docker ですか?Windows だけじゃない App Service を使い切る #MW01

しばやんのセッション、良セッションでした。
資料がもう出てるのでそれをどうぞ。
de:code 2017 で App Service on Linux について話しました - しばやん雑記

Windows 版もそのうち Docker になったりするのかな?

クラウド・ネイティブなスケーラブル・アプリ開発のために~12 Factor App on Kubernetes on Azure

てらださんのセッション
これももう資料出ています。
decode2017-terada - Docs.com

Kubernetes の發音は「クーバネーティス」って感じ。

マイクロサービスっているのあまり 使わなくても良いならマイクロサービスじゃなくて良いのでは?
個人的には、単に REST なりで叩くだけなら、まあ楽かもしれんけどそうじゃない場合大変そうな気がするんやけど。。

マイクロサービスを作っていくための方法を紹介
The Twelve-Factor App (日本語訳)
この中から幾つかデモを交えて紹介。

  • モジュール毎にリポジトリ分けようよ
    • Maven とかで依存管理してたら、自然と別れるんじゃないかな?
    • Gradle のマルチプロジェクトで、jar 作らずに依存してるやつはめんどそうかな~
  • フロントエンドとバックエンドで分ける
    • HTML と WebApp を分けるって感じじゃなくて、フロントの WebApp から Backend の Cognitive 用の WebAPI 叩くとか
    • 同期 / 非同期?
      • Backend のサービス間に依存関係があるなら同期、無ければ非同期で並列実行出来る
  • 共通ライブラリからの解放
    • 共通ライブラリもちゃんとバージョンつけて、利用しているアプリもちゃんとバージョン指定して依存すること
    • 共通ライブラリのバージョンを上げても、利用しているアプリでは不要な機能なら旧バージョンを使っとく
      • 一斉に利用している全アプリでテストするのはツラい
      • 影響あるアプリだけ挙げて検証、リリース
      • 他のアプリは余裕があるときに、バージョンアップの検証
  • 接続情報とかは環境変数を利用
    • どこでも動かせるように、環境変数を使う。
    • Windows / Linux どっちでもある
      • ask the speaker で聞いたけど、最近の EE サーバーも設定環境変数で持てるんだって
        • Payara micro とか

Kubernetes 直接使うより、DEIS 経由の方が楽。
Deis, Inc. | The Kubernetes Company
セッションのデモで叩いたコマンド
PayaraMicro-MicroServices-for-Azure/DEIS-K8S-ACS-Azure.txt at master · yoshioterada/PayaraMicro-MicroServices-for-Azure · GitHub

エンタープライズ基準で"丁寧"に .NET Framework のバージョンアップしていくコツ #TL07

竹原 さんのセッション、発表された時からこれは絶対出るって決めてたやつ。

受けたセッションのなかで、一番笑いとれてたセッションだった。
これも既にデモと資料が公開されています。
GitHub - commerble/decode2017: de:code 2017 デモ

資料に載ってないやつ

  • VS で別プロジェクトのファイルを共有するときは、「リンクとして追加」
  • 実行時に必要なやつ(*.aspx とか実行時コンパイル)は、ビルド後イベントでコピーする
  • ライブラリ(dll)は .NET のバージョンあげなくても、Side by Side で動く。

窓は開かれた!SQL Server on Linux で拡がる可能性 #DI01

最後は、SQL Server on Linux のセッション、2017 あまり触れてないので参加しました。

SQL Server は Data-Driven Inteligence 2017 での主な追加の機能

  • Linux、Docker のサポート
  • Graph データのサポート
  • Machine Learning サービス
  • クエリチューニングの自動化

What's New in SQL Server 2017 | Microsoft Docs
Run SQL Server 2017 on Docker | Microsoft Docs
SQL Graph overview | Microsoft Docs
What's New in Machine Learning Services | Microsoft Docs
Automatic tuning | Microsoft Docs

  • SQL Server 6.5 以前
    • OS まかせ
  • 7.0 ~ 2000
    • UMS (User Mode Scheduler)
  • 2005 ~ 2016
    • SQLOS
    • 中で何やってるか分からない => DMV 追加
  • 2017
    • SQLPAL

SQLPAL
Drawbridge - Microsoft Research を基に改良。
SQL Server on Linux: How? Introduction | SQL Server Blog
SQL Server on Linux って?(第 2 回目) – Microsoft Japan Data Platform Tech Sales Team Blog

Windows 版よりパフォーマンスが出る場合も。
TPC-H で Win の 2016 よりも Linux の 2017 の方が順位上
TPC-H - Top Ten Performance Results
2017 の Win が無いから Linux の方がパフォーマンス良いのかは分からないちゃう?

接続も今までと同じ
新しい GUI Tool を クロスプラットフォームで開発中らしい

バックアップ/リストアも同じ手順
Backup and restore SQL Server databases on Linux | Microsoft Docs

自動フェールオーバー構成も可能
Pacemaker + corosync を利用
AG(Availability Group) リスナー経由での接続も可
Always On availability group for SQL Server on Linux | Microsoft Docs
Configure read-scale availability group for SQL Server on Linux | Microsoft Docs

触らないとねーって感じ。
終わってからムッシュとちょっと話してて、
Windows との AlwaysOn も 2016 からの 分散型可用性グループ 使えば出来そうな感じ。
分散型可用性グループ (Always On 可用性グループ)

久々に de:code 参加しました。1日目のメモ

Keynote

AI 推しな Keynote でした。 Inteligent、Inteligent 言うてる感じ。
他には Build でもあった Project Emma Build 2017: Project Emma - YouTube の話しや
Kipman が登壇して MR すげーって感じ。日本は MR 結構盛り上がってるそうで。

Power Point に Translator プラグインのデモも良かった。
Translator 系はもっと頑張って、同時通訳レシーバーが無くなるくらいになると良いね~。

de:code 2017 Day1 速報! – de:code

セッションは未だ手元にスライド落としてないのであやふやかも。
メモなので、セッションの内容以外のことも書いてます。*1

AIとクラウドソリューションが起こすビジネスイノベーションとは #LS02

ランチセッション

どこで使うかというと、自然言語処理
メールや Skype / Teams 等の通知を解析して、必要な情報を抜き出す。
誰から?タスクなのか?期限は?
こういうのを届いたタイミングで抜き出して人間の仕事をサポートする。

画像認識では、部屋の混み具合を計測する。

いまさら聞けない、エンジニアのための機械学習 #AI01

機械学習の基本の話し。
何回かチャレンジしてるけど、いつも挫折するので聞きました。

Traditional Programming
Data + Program => Output
Machine Learning
Data + Output => Program
コンピュータがプログラムする。

ロジック(アルゴリズムの組み合わせ) => Model
現実世界と合わないときは、データが悪い。
例外データは除く * スコアリング * ROC曲線

どのアルゴリズムを使って良いかわからない!
=> 機械学習アルゴリズム チート シート | Microsoft Docs

Azure ML が得意なやつ

  • 数値予測 => 回帰分析 (Regression)
    • 来月この製品は何個売れるか?
  • ラベル予測 => 分類 (Classification)
    • 教師あり学習 このクレジットカードは不正か?
  • データ分類 => クラスタリング (Clustering)
    • 教師なし学習 あやめの品種分類
  • 異常検知
  • レコメンデーション

データの列 => Feature 答え => Label データを線で分ける、過学習には注意!

Deap learning 多層(4層以上で Deep)
誤差をフィードバックして、重み付けを自動で変えて正答に合わせにいく。
理論に基づいているわけではないので、計算量が膨大。
ある時、ものすごく正当に近づくことがあるので使われる。
だから GPU ですよ!!CPU と比べて圧倒的にコア数が多いのでGPUGPU!言うてる。

始めるには、まず 大量データが必要 + データに対する知見 が必要! データが無いとダメやし、そのデータがどんなデータか分かってないのもダメ。

まかせて!Azure SQL Database #DI02

SQL Database のセッションなんで参加ー。

公式でもこの扱い。セッション中もムッシュやった。

DTU の話し
SQL Database: DTU とは | Microsoft Docs

Azure ポータル、DMV で リソースの使用状況が取れる。
sys.dm_db_resource_stats (Azure SQL データベース)
sys.resource_stats (Azure SQL データベース)

SQLDB では、パフォーマンスモニター見れないけど DMV から取れる。
sys.dm_os_performance_counters (Transact-SQL)
ビュー見る権限は、サービスレベルで異なるので注意!
Premium の方が細かな権限管理出来る。

Standard と Premium では IO が全然違うから、DTU 通りの性能UPとは限らない。 S3:100 DTU、P1:125DTU でも、ワークロードによっては 1.25倍以上のパフォーマンスが出る。
S3 で IOWait 出て、CPU が回ってないケースでは、P1 にすると 1.25倍以上のパフォーマンスが出る場合も。
SQL Database のパフォーマンス: サービス レベル | Microsoft Docs

Query performance insight は クエリストアの情報をポータルに表示している。
クエリストアは 2016 から入った機能 クエリのストアを使用した、パフォーマンスの監視

Index Advisor で、推奨インデックスや重複してるインデックスの削除 の検出や自動設定もしてくれる。
クエリのパフォーマンスに関する推奨事項 - Azure SQL Database | Microsoft Docs

SQL DB では、Profiler は使えないけど、拡張イベントでトレースは取れるよ。
SQL Server のチューニングについてまとめてみる - その1 - ( インデックスの調査 ) - 都内で働くSEの技術的なひとりごと

セキュリティの機能として SQL インジェクションの検知もポータルから出来る。

新機能として色々出てる フェールオーバー グループとアクティブ geo レプリケーション - Azure SQL Database | Microsoft Docs
Get to the cloud faster with Azure SQLDB Managed Instance and Database Migration Service | Build 2017 | Channel 9
https://www.pythian.com/blog/azure-sql-managed-instance-new-member-of-the-family/
How to migrate your databases to the cloud and future-proof your applications | Build 2017 | Channel 9

de:code 2017 DI02 で使用したリアルタイムダッシュボードの構成 at SE の雑記
de:code 2017 DI02 で使用したサンプルスクリプトについて at SE の雑記

使わないのはもったいない!プラネット スケールの NoSQL サービス「Azure Cosmos DB」を使いこなそう #DI04

Document DB あまり触ってなかったので、参加しました。

Build で Document DB の名前が変わったのかな?と思ったら、さらに色々追加されてました。
Cosmos DB についてはここが良さげ Azure Cosmos DB がやってきた — Kyrt Blog

内容は [de:code 2017] 使わないのはもったいない! プラネット スケールの NoSQL サービス「Azure Cosmos DB」を使いこなそう - Togetterまとめ

Cosmos DB はリング0(重要サービス)で、全リージョンで提供されている。
4つの SLA

  • Throughput
  • Consistency
  • Latency
  • Availability

フェールオーバー時のアプリ再デプロイ無し
サイズとスループット分けて調整(課金)出来る。
※サイズは大きいけど、速度は求めないとか
現状:コンテナー内の全パーティションが1つの書き込みリージョンに配置、将来:パーティション毎に異なるリージョンに配置
ネットワークのレイテンシ程度のレスポンス
全フィールドにインデックス、Table Storage にセカンダリインデックスを!が解決?! リクエスト単位で整合性の上書き可能
規定で自動的に暗号化(格納時) Preview だけど、Table Storage API サポート 将来的には Table Storage の裏側は Cosmos DB に置き換わるかも?

眠れるデータを宝に変える!R 徹底活用の勧め。~分析から可視化まで~ #DI11

SQL Server 2016 から R 使えるようになったけど、全然触ってないから途中から参加ー。

R サービスのインストール方法や、開発環境(R Tools for Visual Studio、R Studio) の紹介。
GitHub - Microsoft/SQL-Server-R-Services-Samples: Advanced analytics samples and templates using SQL Server R Services の紹介とデモ。

動かしてみないと分かんないなー。

途中から参加したのは、EXPO 会場で Azure Stack の話し聞いてました。

Azure Stack

ポータルとか Azure と一緒。
API が一緒だから、PowerShell も Azure Stack に接続行くよーの1行入れるだけでそのまま動く。
まだ提供されていないサービスもある。
基本は IaaS。
SQL DB とかサービス毎に、管理用の VM がフロントにいて、バックの VMSQL Server が動いててそれ割り当てるみたいな感じ?
Resource Provider?で機能追加? これも ARM テンプレート叩くだけで展開される。
ここら辺かな見たら分かるんかな?
Using SQL databases on Azure Stack | Microsoft Docs
App Service もKudo 動いてた(2016 Server で!)。
Marketplace も使えるので、あるのはいちいち VM のテンプレート用意しなくてOK!
Create and publish a Marketplace item in Azure Stack | Microsoft Docs
Add the default VM image to the Azure Stack marketplace | Microsoft Docs

ただ必須環境のハードルが高いので、環境のレンタルやってますよーとのこと。*2
多分これ Azure Stack検証環境構築代行サービス|ビットアイル・エクイニクス

久しぶりに会う人多くて、楽しかったー。今から2日目行ってきます~。

*1:関係してそうな URL とか

*2:部長決済で足りる10万以下らしい

第5回 関西DB勉強会で SQL Server のお話ししてきました!

第5回 関西DB勉強会 - connpass
SQL Server と 他 DB の違いを押さえよう!」というタイトルで、SQL Server での用語の説明や構造のお話しをしました。

データベース、ユーザーとか他のDBと指してるものが違うものあるよね~、SQL Server ではどういう構造になってるのか?っていう話しです。
口頭での説明が多かったのでスライド見ても??っとなるかもしれません。。
スライドはこちら。

今回の勉強会は、参加人数も多く始めて参加された方が半数近く、学生の方も来られていたようでした。
DB コミュニティが盛り上がっていったら良いですね~!

CREATE EXTERNAL DATA SOURCE で接続エラー

こんな感じのエラー
Polybase error trying to connect to Hadoop and Azure Blob Storage

PolyBase Engine サービスが起動してないんじゃね? ってことで、サービスを実行するもすぐ止まる。。

Could not start SQL Server PolyBase Engine

TCP/IP の接続を許可してないとダメなんだって。
というわけで、Sql Server Configuration Manager からサクッと設定すると、サービスが動きました。

CREATE EXTERNAL DATA SOURCE もあっさり成功。

最初から PolyBase の概要 の前提条件見ておけってやつですね。。