SQL Server のことなら SQL Quality SQL Server パフォーマンス チューニング、コンサルティング、アドバイス、相談、定期診断、トレーニング

第 52 回:SQL Server 2016 の自習書を作成しました!

2016年2月25日

お待たせしました!
SQL Server 2016 自習書、マイクロソフトさんのサイトで公開されていますので、ご覧ください。
以下のマイクロソフトさんのサイトの「自習書をダウンロードする」からそれぞれダウンロードできますので、ぜひご覧ください。

https://www.microsoft.com/ja-jp/server-cloud/products-SQL-Server-2016-Evaluate.aspx

今回、作成したのは、次の 2冊です。
SQL Server 2016 自習書シリーズ No.1
SQL Server 2016 CTP 3.2 新機能の概要」 全193ページ
SQL Server 2016 自習書シリーズ No.2
SQL Server 2016 CTP 3.3 Operational Analytics
~ OLTP とデータ分析の両立 ~
」 全119ページ

「SQL Server 2016 CTP 3.2 新機能の概要」自習書
SQL2016自習書1

「SQL Server 2016 CTP 3.3 Operational Analytics」自習書
SQL2016自習書2

SQL Server 2016 では、新機能が豊富なため、ボリュームたっぷりとなっております。
自習書を作成していて一番時間をかけているところは、紹介したい機能の特徴を、読者の方々ができるだけシンプルに試せるように、それでいて結果がわかりやすいような例や流れを考えるところです。そのために、何度も検証を行います。ということで、今回も気合を入れて作成いたしました。

SQL Server 2016 はビッグデータを支えるオンプレミス製品として、益々、進化しています。それでいて、ビッグで複雑なことを如何にシンプルに実現するかをひたすら追求している製品だと思います。私はそこが好きなのかなと、今回、検証しながら改めて思った次第です。もちろん、ポテンシャルの高い製品だからこそ、使う側も進化していかなければなりません。私たちの作成する自習書がその一助になれば幸いです。

目次は次のとおりです。

「SQL Server 2016 CTP 3.2 自習書 No.1 新機能ダイジェスト」
STEP 1. SQL Server 2016 CTP 3.2 の概要 4
1.1 SQL Server 2016 CTP 3.2 のダウンロード 5
- Management Studio を別途ダウンロード可能に 6
1.2 SQL Server 2016 CTP 3.2で提供された主な新機能 7
- 性能向上に関する新機能 ~目玉の新機能は Operational Analytics~ 8
- セキュリティ強化に関する新機能 10
- その他の注目の新機能 13
- 既存機能の強化 15
STEP 2. Operational Analytics OLTPとデータ分析の両立 21
2.1 Operational Analytics の概要 ~OLTPとデータ分析の両立~ 22
- インメモリ OLTP の飛躍的な進化 ~Analyticsワークロードにも対応~ 23
- 検証結果:インメモリ OLTP + クラスター化列ストア インデックス 23
- 列ストア インデックスの進化 ~カラム指向とリレーショナルDBの融合~ 24
- 列ストア インデックスはハイブリッドな動作が可能 26
- DWH(データ ウェアハウス)は不要? ~リアルタイムなデータ分析へ~ 27
2.2 Operational Analytics の検証の詳細 28
- 検証の詳細 28
- インメモリ OLTP は、もちろん OLTP に強い 32
- 検証結果: インメモリ OLTP は、単純 INSERT にも強い 33
2.3 Operational Analytics の検証環境 40
STEP 3. セキュリティ強化 41
3.1 セキュリティの強化 42
3.2 動的データ マスクによる情報漏洩対策 43

- Let's Try 43
- FUNCTION に email を指定して電子メール アドレスをマスク 46
- FUNCTION に random を指定して数値データを乱数化 47
- FUNCTION に partial を指定して文字データを任意の文字列にマスク 47
- 設定の確認 ~スクリプト生成、masked_columns カタログ ビュー~ 49
3.3 行レベル セキュリティによるセキュリティ強化 51
- Let's Try 51
- 行レベル セキュリティのためのユーザー定義関数とセキュリティ ポリシーの作成 53
- 行レベル セキュリティを無効化したい場合 55
3.4 Always Encrypted による列データの暗号化 57
- Always Encrypted での基本動作(アプリ側が 暗号 ←→ 復号 を自動で行う) 58
- Let's Try 58
- 暗号化されていることの確認 63
- 接続パラメーターに Column Encryption Setting=Enabled を追加 64
- アプリケーションからの接続(.NET Framework 4.6 の場合) 66
- SQL Server とは別のマシンからの接続(証明書のエクスポート/インポート) 70
- インポート ウィザードでデータのインポート(既存のテーブルからのデータ移行etc) 72
3.5 TDE(透過的なデータ暗号化)の性能向上、インメモリOLTP対応 75
- インメモリ OLTP への対応 75
- TDE のオーバーヘッド ~性能検証結果~ 75
- TDE(透過的なデータ暗号化)の設定方法 77
- Let's Try 77
- 暗号化されていることの確認 80
- 別マシンでのリストアはエラー 81
- サーバー証明書のバックアップとリストア 82
3.6 テンポラル テーブルによる Audit(監査証跡) 85
- テンポラル テーブルの作成方法 85
- Let's Try 87
- データを更新してみよう 89
- 履歴テーブル確認 91
- 過去のデータへのアクセス ~FOR SYSTEM_TIME AS OF~ 92
- その他の演算子 95
- テンポラル テーブルを無効化したい場合(通常テーブルに戻したい場合) 97
STEP 4. 注目の新機能を試してみよう 99
4.1 SQL Server R Services(R 統合) 100
- SQL Server R Services のインストール 100
- R スクリプトの実行 ~sp_execute_external_script~ 106
- Let's Try 107
- SQL Server のデータを input に与える ~@input_data_1~ 109
4.2 JSON 対応(FOR JSON、OPENJSON、JSON_VALUE など) 112
- FOR JSON で SQL Server 上のテーブル データを JSON 形式で出力 113
- OPENJSON 関数で JSON データの取り込み 113
- ISJSON 関数で JSON データかどうかの判別 116
- JSON データを SQL Server 上に格納(ISJSON 関数を CHECK 制約で利用) 116
- JSON_VALUE と JSON_QUERY で JSON データをクエリ 117
4.3 Strech Database ~アクセス頻度の低いデータをクラウドへ~ 119
- Let's Try 120
- Microsoft Azure 管理ポータルで自動作成されたデータベースの確認 126
- 動作の確認 129
- Strech Database モニターで確認 130
- Azure 管理ポータルでデータベースを削除 131
4.4 Azure バックアップ URL の性能向上(ブロック BLOB 対応) 134
- ページ BLOB を利用したバックアップ(従来ながらの利用方法) 134
- ブロック BLOB へのバックアップ(SQL Server 2016 からの新機能) 135
- SAS(Shared Access Signature:共有アクセス署名)の作成方法 136
- Azure PowerShell を利用して、SAS を生成する場合 138
4.5 PolyBase で Hadoop アクセス(Hortonworks、HDInsight) 141
- PolyBase の利用イメージ ~CREATE EXTERNAL TABLE~ 141
- PolyBase を利用する前提条件 144
- PolyBase のインストール方法 145
- PolyBase の利用方法 147
- 参考: HDP(Hortonworks Data Platform)を簡単に試す方法 150
- PolyBase の参考情報 151
STEP 5. 既存機能の強化 152
5.1 SQL Server 2014 からの主な変更点 153
- データベースの互換性レベル 130 153
- サービス アカウントに「ボリュームの保守タスクを実行」を簡単に付与可能に 154
- tempdb の拡張 ~ファイル数や初期サイズをセットアップ時に設定可能に~ 155
- tempdb の性能に関連するトレースフラグ 1117 と 1118 が既定でオンに 156
- トレースフラグ 4199 がオンと同等の動作(クエリ オプティマイザーの動作) 156
- Active Directory パスワード認証/統合認証を利用可能に 157
5.2 ライブ クエリ統計(Live Query Statistics) 158
- ライブ クエリ統計の利用方法(1クリックのみ) 158
5.3 クエリ ストアで性能監視、プラン固定 160
- クエリ ストアの最大のメリット ~実行プランの比較/プラン固定~ 161
- Let's Try 161
- クエリの実行 165
- SQL Server 再起動後の同じクエリの実行プランの確認 167
- プロシージャ キャッシュのクリア後の実行プランの確認 168
- クエリ ストアを GUI で確認 169
- 表示される期間の変更 172
- 複数の実行プランの確認 ~ col3=@p1 のクエリ~ 173
- 実行プランの強制 175
- 全体のリソース消費量 177
- クエリ ストアの設定 178
5.4 Transact-SQL(T-SQL)の強化 180
5.5 AlwaysOn 可用性グループの拡張 181
- 自動フェールオーバーを構成できる台数が 2から 3 に増加 181
- ログ転送転送性能の向上(マルチ スレッドで処理) 182
- ワークグループ環境で利用可能(Windows Server 2016 を利用する場合)
5.6 BI 関連の強化 184
- Reporting Services の強化(Datazen 統合など) 184
- Integration Services(SSIS)の強化 187
- Analysis Services(SSAS)の強化 187
- MDS(マスター データ サービス)の強化 188
- おわりに 189
5.7 付録:サンプル データベース(NorthwindJ)の作成 190
- NorthwindJ データベースの構成 192

「SQL Server 2016 CTP 3.3 自習書 No.2 Operational Analytics」
STEP 1. SQL Server 2016 CTP 3.3 の Operational Analytics の概要 4
1.1 SQL Server 2016 CTP 3.3 のダウンロード 5
- Management Studio を別途ダウンロード可能に 6
1.2 SQL Server 2016 CTP 3.3で提供された主な新機能 7
1.3 Operational Analytics の概要 ~OLTPとデータ分析の両立~ 9

- インメモリ OLTP の飛躍的な進化 ~Analyticsワークロードにも対応~ 10
- 検証結果:インメモリ OLTP + クラスター化列ストア インデックス 10
- 列ストア インデックスの進化 ~カラム指向とリレーショナルDBの融合~ 11
- 列ストア インデックスはハイブリッドな動作が可能 13
- DWH(データ ウェアハウス)は不要? ~リアルタイムなデータ分析へ~ 14
- SQL Server 2016 では 480スレッドでもスケール 15
STEP 2. Operational Analytics の検証の詳細 17
2.1 Operational Analytics の検証の詳細 18
- 検証の詳細 ~テーブル構成、1億件のデータ~ 18
- 検証で使用した集計クエリ(col4 で GROUP BY) 20
- 検証結果の詳細 ~実行プランなど~ 20
2.2 インメモリ OLTP の検証(もちろん OLTP に強い) 22
- 検証結果: インメモリ OLTP は、単純 INSERT にも強い 23
2.3 Operational Analytics の検証環境 30
2.4 Operational Analytics を試す方法 31

- インメモリ OLTP の基本的な利用方法 31
- 通常と同様「データベース エンジン サービス」のインストール 32
- データベースの互換性レベルを「130」へ設定 32
- ファイル グループの作成 33
- メモリ最適化テーブルの作成 34
- メモリ最適化テーブルでは HASH インデックスが基本、BUCKET_COUNT 35
- BUCKET_COUNT の違いによるメモリ使用量の差 37
- メモリ最適化テーブルにクラスター化列ストア インデックスを追加 38
- メモリ最適化テーブルを利用する条件 39
- SQL Server 2014 との違い(多くの制限が取り払われた) 40
- メモリ最適化テーブルへの移行 41
- メモリ最適化アドバイザーによる移行 42
2.5 Operational Analytics を試すスクリプト 44
- 3種類のテーブルの作成(通常、インメモリ OLTP、Operational Analytics) 46
- 1億件のデータのコピー 47
- 検証の実行 ~集計クエリの実行~ 47
- 性能が確認できない場合の対処方法 48
- デスクトップ機(32GBメモリ)での 1千万件の場合の性能結果 50
STEP 3. 列ストア インデックスを 利用した Operational Analytics 51
3.1 列ストア インデックスを利用した Operational Analytics 52
- 更新可能になった非クラスター化列ストア インデックス 52
- SQL Server 2016 からの列ストア インデックスの飛躍的な進化 53
3.2 列ストア インデックスの基本的な利用方法 54
- 非クラスター化列ストア インデックスの作成方法 54
- クラスター化列ストア インデックスの作成方法 55
- 列ストア インデックスによる性能向上 56
3.3 列ストア インデックスの性能比較 57
- データベースの作成 57
- テーブル「t1」の作成(ディスク ベースの通常テーブル) 57
- 1,000万件のデータの INSERT 58
- 通常テーブルでの速度チェック 59
- b-tree 非クラスター化インデックスの作成(通常のインデックスの場合の性能) 61
- 非クラスター化列ストア インデックスの作成、性能チェック 62
- SQL Server 2016 からは更新可能に 64
- クラスター化列ストア インデックスの作成、性能チェック 66
- 弊社のお客様データでの圧縮例(100億件の DWH で 1/6 に) 72
3.4 列ストア インデックスでのデータ更新とインデックスの再構築 73
- 10万件のデータの INSERT 73
- クラスター化列ストア インデックスの再構築(REBUILD) 74
3.5 BULK INSERT で 10万件分のデータを一括インポート 77
- bcp コマンドで 10万件分のテキスト ファイルの作成 77
- BULK INSERT ステートメントで 10万件を一括インポート 78
- インポート後はインデックスの再構築 80
3.6 インメモリ OLTP の利用 82
- Let's Try 82
- 性能が確認できない場合の対処方法 83
- 列ストア インデックスのまとめ 85
STEP 4. インメモリ OLTP の基本操作 86
4.1 インメモリ OLTP の主な特徴 87
- インメモリ OLTP 機能の主な特徴 87
- ネイティブ コンパイル ストアド プロシージャの作成例 87
- ブロッキングの最小化(ロック待ちやラッチ待ちを最小化した同時実行性を提供) 88
4.2 インメモリ OLTP の基本操作 89
- データベースの作成(testDB) 89
- 通常テーブルの作成(t1_disk) 89
- 通常テーブルへの 100万件のデータ INSERT 90
4.3 メモリ最適化テーブルの作成/性能比較 92
- ファイル グループの作成 92
- メモリ最適化テーブルの作成 93
- 100万件のデータ INSERT 93
- ディスク ベースで自動拡張が発生する場合の性能差 95
4.4 テーブル サイズ(メモリ使用量)の確認 97
4.5 ネイティブ コンパイル ストアド プロシージャによる性能向上 99

- ネイティブ コンパイル ストアド プロシージャの作成 99
- 100万件のデータ INSERT 99
- 1,000万件のデータの INSERT 102
- 1件の INSERT をネイティブ コンパイル ストアド プロシージャ化 103
4.6 データの永続化(SCHEMA_AND_DATA) 106
- Let's Try 106
- SQL Server 再起動後のデータ復旧の確認 108
- Delayed Durability(遅延永続化) 110
- Let's Try 111
4.7 メモリ最適化テーブルでの同時更新(Write-Write 競合) 113
- Let's Try 113
- 別の接続からデータの参照 114
- INSERT 競合(同じ値を INSERT) 116
- おわりに 118

SQL Server 2016 の概要については、恒例の「新機能プレビューセミナー」実施後、改めてご紹介できればと思っています。
BI 機能関連の自習書も作成中です。こちらも楽しみにしていてください。

■ おわりに
今回の制作中の BGM は、某映画の主題歌「In Memories」でした。そのままですね(笑)

ルリビタキ(女子)
ルリビタキ(女子)


事例1

SQLQualityは執筆とセミナーを通じて技術の啓蒙やエンジニアの育成支援も行っています
最新刊
SQL Server 2016 の教科書
SQL Server 2016 の教科書(ソシム)

弊社オリジナル制作の
SQL Server 2016 自習書も
マイクロソフトのサイトで公開中!
ダウンロードはこちら
セミナー風景
セミナー風景

ロングセラー
ASP.NET でいってみよう  SQL Server 2000 でいってみよう
ASP.NET でいってみよう
第7刷 16,500 部発行
SQL Server 2000 でいってみよう
第12刷 28,500 部発行
SQL Server 2014 CTP2 インメモリ OLTP 機能の概要
SQL Server 2014 CTP2 インメモリ OLTP 機能の概要(Amazon Kindle 書籍)

弊社執筆の
SQL Server 2014 自習書
マイクロソフトのサイトで公開中
目次はこちら

弊社執筆の
SQL Server 2012 自習書
マイクロソフトのサイトで公開中
ダウンロードはこちら
松本美穂のコラム
(公開活動などのお知らせ)

第60回:SQL Server 2017 自習書 No.3「SQL Server 2017 Machine Learning Services」のご案内
第59回:SQL Server 2017 自習書 No.2「SQL Server 2017 on Linux」のご案内
第58回:SQL Server 2017 自習書 No.1「SQL Server 2017 新機能の概要」のご案内
第57回:SQL Server 2017 RC 版とこれまでのドキュメントのまとめ
第56回:「SQL Server 2016 への移行とアップグレードの実践」完成&公開!
第55回:書籍「SQL Server 2016の教科書 開発編」(ソシム)が発刊されました
第54回:「SQL Server 2016 プレビュー版 Reporting Services の新機能」自習書のお知らせ
第 53 回:SQL Server 2016 Reporting Services の新しくなったレポート マネージャーとモバイル レポート機能
第 52 回:SQL Server 2016 の自習書を作成しました!
第 51 回:PASS Summit と MVP Summit で進化を確信!
第 50 回:新しくなった Power BI(2.0)の自習書を作成しました!
第49 回:Excel 2016 の Power Query を使う
第 48 回:新しくなった Microsoft Power BI ! 無料版がある!!
第 47 回:「Microsoft Azure SQL Database 入門」 完成&公開!
第 46 回:Microsoft Power BI for Windows app からの Power BI サイト アクセス
第 45 回:Power Query で取得したデータを PowerPivot へ読み込む方法と PowerPivot for Excel 自習書のご紹介
第44回:「SQL Server 2014 への移行とアップグレードの実践」ドキュメントを作成しました
第43回:SQL Server 2014 インメモリ OLTP 機能の上級者向けドキュメントを作成しました
第42回:Power Query プレビュー版 と Power BI for Office 365 へのクエリ保存(共有クエリ)
第41回:「SQL Server 2014 CTP2 インメモリ OLTP 機能の概要」自習書のお知らせです
第40回: SQL Server 2012 自習書(HTML版)を掲載しました
第39回: Power BI for Office 365 プレビュー版は試されましたか?
第38回: SQL Server 2014 CTP2 の公開
第37回: SQL Server 2014 CTP1 の自習書をご覧ください
第36回: SQL Server 2014 CTP1 のクラスター化列ストア インデックスを試す
第35回: SQL Server 2014 CTP1 のインメモリ OLTP の基本操作を試す
第34回: GeoFlow for Excel 2013 のプレビュー版を試す
第33回: iPad と iPhone からの SQL Server 2012 Reporting Servicesのレポート閲覧
第32回: PASS Summit 2012 参加レポート
第31回: SQL Server 2012 Reporting Services 自習書のお知らせ
第30回: SQL Server 2012(RTM 版)の新機能 自習書をご覧ください
第29回: 書籍「SQL Server 2012の教科書 開発編」のお知らせ
第26回: SQL Server 2012 の Power View 機能のご紹介
第25回: SQL Server 2012 の Data Quality Services
第24回: SQL Server 2012 自習書のご案内と初セミナー報告
第23回: Denali CTP1 が公開されました
第22回 チューニングに王道あらず
第21回 Microsoft TechEd 2010 終了しました
第20回 Microsoft TechEd Japan 2010 今年も登壇します
第19回 SQL Server 2008 R2 RTM の 日本語版が公開されました
第18回 「SQL Azure 入門」自習書のご案内
第17回 SQL Server 2008 自習書の追加ドキュメントのお知らせ
第16回 SQL Server 2008 R2 自習書とプレビュー セミナーのお知らせ
第15回 SQL Server 2008 R2 Reporting Services と新刊のお知らせ
第14回 TechEd 2009 のご報告と SQL Server 2008 R2 について
第13回 SQL Server 2008 R2 の CTP 版が公開されました
第12回 MVP Summit 2009 in Seattle へ参加

技術コミュニティでも活動中
松本崇博 Blog(SQL Server Tips)
松本美穂ブログ(SQL Serverノート)