SQL Server 2016 CTP 3.0 新機能
2015/11/21
はじめに
2015/11/21SQL Server 2016 CTP 3.0 新機能2
2015/11/21 時点の DL 可能な最新バージョンである
SQL Server 2016 CTP 2.4 の情報を元に作成しています
RTM 時には変更されている可能性がありますので時期に
応じた、最新の情報を参照してください
SQL Server 2016 関連情報
2015/11/21SQL Server 2016 CTP 3.0 新機能3
 ダウンロード
 SQL Server 2016 Community Technology Preview 3.0.
 https://www.microsoft.com/en-us/evalcenter/evaluate-sql-server-2016
 Download SQL Server Management Studio
 https://msdn.microsoft.com/en-us/library/mt238290.aspx
 技術情報
 SQL Server 2016 Release Notes
 https://msdn.microsoft.com/en-us/library/dn876712.aspx
 SQL Server 2016
 https://www.microsoft.com/en-us/server-cloud/products/sql-server-2016/default.aspx
 SQL Server 2016 CTP Technical Deep Dive
 http://www.slideshare.net/idigdata/sql-server-2016-ctp-technical-deep-dive
 SQL Server 2016 CTP New Features - 9 June 2015 08:01
 http://smooth1.co.uk/sqlserver2016/2016_CTP.html
 SQL Server 2016 Community Technology Preview 3.0 is available
 http://blogs.technet.com/b/dataplatforminsider/archive/2015/10/28/sql-server-2016-community-technology-preview-3-0-is-available.aspx
 デモスクリプト
 https://github.com/MasayukiOzawa/SQLServer2016DemoScript
SQL Server 2016 関連情報
2015/11/21SQL Server 2016 CTP 3.0 新機能4
 What’s New
 What‘s New in Database Engine
 https://msdn.microsoft.com/en-us/library/bb510411.aspx
 What's New in Analysis Services
 https://msdn.microsoft.com/en-us/library/bb522628.aspx
 What's New in Integration Services
 https://msdn.microsoft.com/en-us/library/bb522534.aspx
 What's New in Reporting Services
 https://msdn.microsoft.com/en-us/library/ms170438.aspx
 What's New in Master Data Services
 https://msdn.microsoft.com/en-us/library/ff929136.aspx
 What‘s New (Replication)
 https://msdn.microsoft.com/en-us/library/bb500342.aspx
 ALTER DATABASE Compatibility Level (Transact-SQL)
 https://msdn.microsoft.com/ja-jp/library/bb510680(v=sql.130).aspx
 R 言語の対応については CTP3.0 で実装
 What‘s New in SQL Server R Services
https://msdn.microsoft.com/en-us/library/mt604847.aspx
 CTP 2.4
 http://blogs.technet.com/b/dataplatforminsider/archive/2015/09/30/sql-server-2016-community-technology-preview-2-4-is-
available.aspx
本スライドのカバー範囲
CTP 3.0
What‘s New in Database Engine
2015/11/21SQL Server 2016 CTP 3.0 新機能5
 主要な変更点
 Database Engine Feature Enhancements
 Transact-SQL Enhancements
 Security Enhancements
 High Availability Enhancements
 Advanced Analytics
 Tools Enhancements
 .NET Framework 4.6 (Database Engineでは、3.5 SP1 も必要となる)
 単体での SSMS の提供
 Express で完全版の SSMS ではなく、SSMS のスタンドアロンインストーラーを提供
 Download SQL Server Management Studio
https://msdn.microsoft.com/en-us/library/mt238290.aspx
 SSMS に SQL Database を Azure AD で認証するための以下の方式が追加
 Active Directory パスワード認証
 Active Directory Integrated Authentication
 x86 サーバーの廃止
 サーバーコンポーネントの x86 サポートが廃止
 現時点では、Express Edition についても x64 のみとなっている
https://msdn.microsoft.com/en-us/library/ms143506.aspx
Database Engine Feature Enhancements
2015/11/21SQL Server 2016 CTP 3.0 新機能6
Database Engine Feature Enhancements
2015/11/21SQL Server 2016 CTP 3.0 新機能7
 Columnstore Indexes
 In-Memory OLTP
 Live Query Statistics
 Query Store
 Temporal Tables
 Backup to Microsoft Azure
 Managed Backup
 Trace Flag 4199
 Multiple TempDB Database Files
 インストール時に CPU コア数に合わせて、最大で 8 データファイルを設定した状態でインストール
(/SQLTEMPDBFILECOUNT オプションの追加)
 FOR JSON
 Always Encrypted
 PolyBase
 Stretch Database
Columnstore Indexes
2015/11/21SQL Server 2016 CTP 3.0 新機能8
 シングルスレッドでのバッチモード処理
 2014 まではマルチスレッドの場合のみバッチモードで処理が行われていた
 互換性レベル 130 が必要 (互換性レベル 120/ 130によって使用できるパフォーマンス拡張の範囲に差がある)
https://msdn.microsoft.com/ja-jp/library/bb510680(v=sql.130).aspx
 READ_COMMITTED_SNAPSHOT / ALLOW_SNAPSHOT_ISOLATION のサポート
 列ストアインデックスでロック競合を抑えた読み取り処理が可能
 CREATE TABLE 時に列ストアインデックスを設定可能 (インラインインデックス作成)
 2014 まではテーブル作成 → 列ストアインデックスを追加
 非クラスター化列ストアインデックスに対して更新が可能
 Columnstore Indexes for Operational Analytics
 https://msdn.microsoft.com/en-us/library/dn817827.aspx
 Btree + クラスター化列ストアインデックスの組み合わせが可能
一意制約 / 外部キー制約も設定可能
 リアルタイムなデータ検索を目指し、列ストアインデックスとメモリ最適化テーブルを組み合わせて使用可能
 変更等のデータはメモリ最適化テーブルに格納し、バックグラウンドタスクで列ストアインデックスに移行
 フィルター化された非クラスター化列ストアインデックスを作成可能
 列ストア + 行ストアまたは、メモリ最適化テーブル の 2 種類のデータを保持する
 Columnstore Indexes Versioned Feature Summary
https://msdn.microsoft.com/en-us/library/dn934994.aspx
Columnstore Indexes
-シングルスレッドでのバッチモード処理 -
2015/11/21SQL Server 2016 CTP 3.0 新機能9
SELECT O_CUSTKEY,COUNT(*) FROM ORDERS_CI GROUP BY O_CUSTKEY OPTION (MAXDOP 1)
 SQL Server 2014 まで
 SQL Server 2016 から (互換性レベル 130)
 従来のクラスター化列ストアインデックス
 クラスター化列ストアインデックス + メモリ最適化テーブル
2015/11/21SQL Server 2016 CTP 3.0 新機能10
Columnstore Indexes
- 列ストアインデックス + メモリ最適化テーブル -
列ストア 行ストア
ディスクベーステーブル
In-Memory OLTP
列ストア
100万行で
列ストアに圧縮
メモリ最適化テーブル
ディスクベーステーブル
追加データ
追加データ
100万行で
列ストアに圧縮
2015/11/21SQL Server 2016 CTP 3.0 新機能11
行ストア 列ストア メモリ最適化
クラスター化 非クラスター化 クラスター化 非クラスター化 ハッシュ 非クラスター化
行ストア
クラスター化 ○ ×
○
2016 から
×
非クラスター化
○
2016 から
○
2016 から
×
列ストア
クラスター化 ×
○
2016 から
○
2016 から
非クラスター化
○
2016 から
○
2016 から
× ×
メモリ最適化
ハッシュ
×
○
2016 から
×
非クラスター化
Columnstore Indexes
- SQL Server 2016 のインデックスの組み合わせ -
In-Memory OLTP 1/2
2015/11/21SQL Server 2016 CTP 3.0 新機能12
 1DB の持続性のあるテーブルの合計サイズのサポートが 256 GB → 2TB に変更
 コンテナー単位に 1 つのオフラインチェックポイントスレッドの生成
 オフラインチェックポイントスレッドがネックになるスケールリミットの緩和
 2 ソケット / 64 コア以上でも性能が発揮できる (SQL Server 2014 は 2 または 4 ソケットおよび 60 未満の
コアのシステムを想定している)
https://msdn.microsoft.com/ja-jp/library/dn170449(v=sql.120).aspx
 ストレージ管理を FILESTERAM からの分離
 2014 では、チェックポイントファイル (データファイル / デルタファイル) が FILESTREAMに基づいて処理さ
れていた
 $HKv2 ディレクトリに永続化ファイルが作成される
 メモリ最適化テーブルに対しての TDE のサポート
 ALTER による変更のサポート
 メモリ最適化テーブル (オフラインオペレーションのため、対象テーブルに対してメモリが倍必要となる) / ネイ
ティブコンパイルストアドプロシージャの定義変更が可能
 Multiple Active Result Set (MARS) のサポート
 ネイティブコンパイルストアドプロシージャ内でユーザー定義関数(スカラー値関数)の
呼び出しをサポート (WITH NATIVE_COMPILATION を指定した関数を作成)
 CREATE FUNCTION (Transact-SQL)
https://msdn.microsoft.com/en-us/library/ms186755.aspx
In-Memory OLTP 2/2
2015/11/21SQL Server 2016 CTP 3.0 新機能13
 照合順序の制限の緩和
 https://msdn.microsoft.com/en-us/library/dn133182.aspx
 非 Unicode 文字列に 1252 (Latin) 以外の照合順序を指定可能
 インデックスキーに BIN2 以外の照合順序を指定可能
 T-SQL のサポート範囲の増加 (ネイティブコンパイルストアドプロシージャでの OUTER JOIN / UNION サポート等)
 SQL Server 2014 での制限は以下
インメモリ OLTP でサポートされていない Transact-SQL の構造
https://msdn.microsoft.com/ja-jp/library/dn246937(v=sql.120).aspx
 DML トリガーのサポート
 FOR / AFTER トリガーのサポート
 ネイティブコンパイルモジュールとして作成 / 結果を返すクエリはサポートされない
 FOREIEIGN KEY / CHECK / UNIQUE 制約のサポート
 参照整合性制約は参照テーブルの主キーに対して設定 / メモリ最適化テーブル間のみ可能 / CASCADE の指定はできない
 メモリ最適化テーブルで並列クエリのサポート (互換性レベル 130)
 Memory optimized table queries can have parallel plans.
https://msdn.microsoft.com/en-us/library/dn934994.aspx
 In-Memory OLTP
https://msdn.microsoft.com/en-us/library/bb510411.aspx#InMemory
 In-Memory OLTP (In-Memory Optimization)
https://msdn.microsoft.com/en-us/library/dn133186.aspx
 In-Memory OLTP – The faster is now simpler!
http://www.sqlshack.com/in-memory-oltp-the-faster-is-now-simpler/
CTP 3.0
CTP 3.0
2015/11/21SQL Server 2016 CTP 3.0 新機能14
 SQL Server 2014  SQL Server 2016
In-Memory OLTP
- ストレージ管理の変更 -
In-Memory OLTP
- 並列クエリのサポート -
2015/11/21SQL Server 2016 CTP 3.0 新機能15
SELECT O_CUSTKEY,COUNT(*) FROM ORDERS GROUP BY O_CUSTKEY ORDER BY O_CUSTKEY DESC
 SQL Server 2014
 SQL Server 2016 (互換性レベル 130)
Live Query Statistics
2015/11/21SQL Server 2016 CTP 3.0 新機能16
 実行中のクエリに対して、実行プランがどこまで完了したかを表示する機能
 推定実行プラン : 実行前 / 実際の実行プラン : 実行後 とは違い実行中
 クエリエディタと利用状況モニターから確認可能
 SQL Server 2014 (SP1 で確認) / SQL Database v12 に対して使用可能
 利用状況モニターでは、以下の条件を満たすことで他のセッションに対して
使用可能
 SET STATISTICS XML ON / SET STATISTICS PROFILE ON が実行されている
 query_post_execution_showplan 拡張イベントを使用できる
 列ストアインデックス / メモリ最適化テーブル / ネイティブコンパイルスト
アドプロシージャでは非サポート
 Live Query Statistics
https://msdn.microsoft.com/en-us/library/dn831878.aspx
2015/11/21SQL Server 2016 CTP 3.0 新機能17
 実際の実行プラン
 ライブクエリ統計
Live Query Statistics
- 実行中のクエリのプラン表示 -
Query Store
2015/11/21SQL Server 2016 CTP 3.0 新機能18
 コンパイル時と実行時の情報をクエリー ストアに格納することで、実行されたタイ
ミングのクエリの情報を確認することができる
 Plan Store : 実行プラン / Runtime Stats : 実行時間等の情報
 同一クエリで実行プランが途中で変更された場合、各実行プランごとにクエリの実
行状態を取得することが可能
 プランキャッシュは最新の実行プランだが、クエリー ストアは実行されたタイミングのプ
ランを確認できる
 特定の実行プランを強制することができる
 類似の機能にプラン ガイドがあるが、クエリー ストアの方がシンプルな操作で適用する
ことが可能
(クエリー ストアに使用したいプランの情報が取得されている必要があるが)
 インメモリ OLTP への対応
 ネイティブコンパイルモジュールのクエリ情報も取得される
 Monitoring Performance By Using the Query Store
https://msdn.microsoft.com/en-us/library/dn817826.aspx
CTP 3.0
Query Store
2015/11/21SQL Server 2016 CTP 3.0 新機能19
SQL
コンパイル
実行
プランストア
実行統計
クエリーストア
スキーマ
クエリーストア
コンパイル
メッセージ
実行
メッセージ
非同期
書き込み
2015/11/21SQL Server 2016 CTP 3.0 新機能20
Query Store
- 同一クエリの実行プランの変化の確認 -
Temporal Tables
2015/11/21SQL Server 2016 CTP 3.0 新機能21
 ANSI SQL:2011 規格であり、SQL Server 固有の機能ではない
 トランザクション時間 / データの有効期間を SysStartTime / SysEndTime とし持つことで、自動的なデータアーカイブ
と変更履歴の追跡が可能
 特定の期間のデータや、全期間のデータを確認可能
 CTP3 で期間の指定方法が拡張されている
 HIDDEN を設定することで、SysStartTime/SysEndTimeを非表示項目に設定可能
 システムバージョン管理されたテーブル / 履歴テーブルの二つで構成され、透過的に二つのテーブルを操作するこ
とができる
 システムバージョン管理されたテーブルには最新のデータが格納されている
 データを変更すると、変更前のデータが自動的に履歴テーブルに追加される
 デフォルトでは履歴テーブルにページ圧縮が行われている
 Truncate Table は実行することができない
 In-Memory OLTP と組み合わせることが可能
 SCHEMA_AND_DATA のみ可能
 ALTER TABLE のサポート
 Temporal Tables
 https://msdn.microsoft.com/en-us/library/dn935015.aspx
 System-Versioned Temporal Tables with Memory-Optimized Tables
 https://msdn.microsoft.com/en-us/library/mt590207.aspx
CTP 3.0
CTP 3.0
CTP 3.0
2015/11/21SQL Server 2016 CTP 3.0 新機能22
 テーブルの構造  テーブルの操作
Temporal Tables
- 基本的な構成 -
INSERT
UPDATE
DELETE
変更前のデータを履歴に追加
システム バージョン管理されたテーブル
SELECT * FROM Table
データの参照
履歴テーブル
最新データを参照
システム バージョン管理されたテーブル
履歴テーブル
システム バージョン管理されたテーブル
SELECT * FROM Table FOR SYSTEMTIME
データの参照
履歴テーブル
透過的に特定タイミングのデータを参照
データの変更
Multiple TempDB Database Files
2015/11/21SQL Server 2016 CTP 3.0 新機能23
 インストール時に TempDB のデータファイルを最適化
 データファイル数 : 8 または CPU コアの小さい方 を初期値として設定 (8 また
は CPU コアの大きい方が最大数)
 GUI / 構成ファイルが複数 tempdb に対応
; データベース エンジンの TempDB ファイルの数。
SQLTEMPDBFILECOUNT="2"
; データベース エンジン TempDB データ ファイルの初期サイズを MB 単位で指定します。
SQLTEMPDBFILESIZE="8"
; 各データベース エンジン TempDB データ ファイルの自動拡張増分値を MB 単位で指定します。
SQLTEMPDBFILEGROWTH="64"
; データベース エンジン TempDB ログ ファイルの初期サイズを MB 単位で指定します。
SQLTEMPDBLOGFILESIZE="8"
; 各データベース エンジン TempDB ログ ファイルの自動拡張増分値を MB 単位で指定します。
SQLTEMPDBLOGFILEGROWTH="64"
Instant File Initialization setting for engine setup
2015/11/21SQL Server 2016 CTP 3.0 新機能24
 インストール時に瞬時初期化の有効化が可能に。
 http://blogs.technet.com/b/dataplatforminsider/archive/2015/10/28/sql-server-2016-community-technology-preview-3-0-is-available.aspx
 SQLSVCINSTANTFILEINIT = TRUE オプションが追加
 https://msdn.microsoft.com/en-us/library/ms144259(v=sql.130).aspx
CTP 3.0
Backup to Microsoft Azure
2015/11/21SQL Server 2016 CTP 3.0 新機能25
 SQL Server 2012 SP1 CU2 で追加された、Azure ストレージにバックアップ取得機能の拡張
 ブロック BLOB に対してバックアップを取得することが可能となった
 以前のバージョンはページ BLOB に対してバックアップを取得
 複数のファイルにストライプして取得できない
 バックアップファイルの最大サイズが 1TB
 ブロック BLOB に対して取得することで以下が可能
 複数のファイルにストライプして取得できる (各ファイルの最大サイズは 200GB)
 複数のファイルにストライプして取得することでバックアップ / リストア性能の向上
 バックアップファイルの最大サイズが 12.8 TB
 資格情報の指定方法が異なる
 ページ BLOB
 ストレージアカウント / ストレージアカウントキー
 ブロック BLOB
 ストレージアカウント / SAS トークン
 SQL Server Backup to URL
https://msdn.microsoft.com/en-US/library/dn435916.aspx
2015/11/21SQL Server 2016 CTP 3.0 新機能26
 ページ BLOB にバックアップ
CREATE CREDENTIAL [<資格情報名>]
WITH IDENTITY = '<ストレージアカウント名>',
SECRET = '<ストレージアカウント アクセスキー>'
GO
BACKUP DATABASE <データベース名>
TO URL = 'https://<ストレージアカウント名>.blob.core.windows.net/<コンテナー名>/<バックアップ名>'
WITH CREDENTIAL = '<資格情報名>' ,COMPRESSION, STATS = 5
 ブロック BLOB にバックアップ
CREATE CREDENTIAL [https://<ストレージアカウント名>.blob.core.windows.net/<コンテナー名>]
WITH IDENTITY='SHARED ACCESS SIGNATURE', -- IDENTITY は固定
SECRET = '<sv= ~の SAS トークン>'
BACKUP DATABASE TEST
TO URL = 'https://<ストレージアカウント名>.blob.core.windows.net/<コンテナー名>/test_01_blockblob.bak',
URL = 'https://<ストレージアカウント名>.blob.core.windows.net/<コンテナー名>/test_02_blockblob.bak'
WITH COMPRESSION, STATS = 5
Backup to Microsoft Azure
- 2 種類の取得方法 -
Managed Backup
2015/11/21SQL Server 2016 CTP 3.0 新機能27
 保有期間の設定 (1~30日) に応じて、Azure 上に自動的に完全/ログバックアップを取
得する機能
https://msdn.microsoft.com/ja-jp/library/dn449496(v=sql.120).aspx#Concepts
 Microsoft Azure への SQL Server マネージバックアップ
 SQL Server 2014 で追加された管理対象バックアップの機能拡張
 カスタムスケジュールのバックアップ設定が可能
 2014 はデータの更新状況や前回バックアップからの経過時間に応じた自動バックアップのみサポート
 managed_backup.sp_backup_config_schedule で設定
 システムデータベースのバックアップをサポート
 単純復旧モデルのデータベースのサポート
 CTP 2 では SSMS の GUI ベースでの設定ができないため T-SQL / PowerShell で設定
 SQL Server Managed Backup to Microsoft Azure
https://msdn.microsoft.com/en-us/library/dn449496.aspx
Trace Flag 4199
2015/11/21SQL Server 2016 CTP 3.0 新機能28
 クエリオプティマイザ関連のトレースフラグ
 今まで明示的に有効する必要のあった各種トレーフラグが、互換性レベル 130 では、デ
フォルトで有効の状態となっている。
https://support.microsoft.com/ja-jp/kb/974006
 4101~4111 / 4115~4117 / 4119~4122 / 4124~4129 / 4131 / 4133 / 4135
Always Encrypted
2015/11/21SQL Server 2016 CTP 3.0 新機能29
 常に暗号化した状態でデータを操作するための機能
 クエリの実行端末に Column Master Key (CMK) を配置
 SQL Server に CMK から生成された Column Encryption Key (CEK) を配置
 暗号化する列は、DETERMINISTIC (検索項目として使用可) / RANDOMIZED (検索項目として使用不可)
の 2 種類を設定可能
 クエリ実行時には通常のテキストで条件句を指定
 実際に実行されるクエリは暗号化されたテキストで条件句が設定される
(指定したテキストが透過的に暗号化されてクエリが生成される)
 プロファイラー等でクエリをキャプチャしても、条件句は暗号化された状態
 クエリの実行端末の条件
 .NET Framework 4.6 (4.6 で拡張された ADO.NET のライブラリを使用)
 HSM を使用する場合には、.NET Framework 4.6.1 を使用する
 接続文字列に「Column Encryption Setting=enabled」を指定
 暗号化された項目を検索条件とする場合は、SqlParameter オブジェクトを使用する
 Always Encrypted (Database Engine)
https://msdn.microsoft.com/en-us/library/mt163865.aspx
2015/11/21SQL Server 2016 CTP 3.0 新機能30
Always Encrypted
- 常に暗号化した状態でのデータ操作 -
アプリケーション
Column Master Key (CMK)
Enhanced
ADO.NET
Library
SQL Server
Column Encryption Setting=enabled
Column Encryption Key (CEK)
@Param = 'ABCDEFG'
SELECT * FROM Table
WHERE Col2 = @Param
アプリケーションからは通常の文字列で検索
@Param = 1x7fg68
SELECT * FROM Table
WHERE Col1 = @Param
Col1 Col2 Col3
1 1x7fg68 JPN
2 0x7ff65e JPN
3 0y8fj75e USA
Col1 Col2 Col3
1 1x7fg68 JPN
Col1 Col2 Col3
1 ABCEDFG JPN
SQL Server 側では暗号化された文字列で検索
(クエリキャッシュも暗号化された文字列でキャッシュ)
データは暗号化された文字列で検索
(データキャッシュも暗号化された文字列でキャッシュ)
複合化された状態で見える 暗号化された状態で返却
FOR JSON
2015/11/21SQL Server 2016 CTP 3.0 新機能31
 JSON 型が提供されるというわけではない
 nvarchar 等に文字列データ型に JSON のデータを格納
 SQL の実行結果を JSON として出力できる
 FOR JSON
 実行結果が大きい場合には複数行として結果が返されるため結合する
 以下の機能 (JSON 関数) を CTP 3 から利用可能
 OPEN JSON
 ISJSON
 JOSN_VALUE
 Format Query Results as JSON with FOR JSON (SQL Server)
https://msdn.microsoft.com/en-us/library/dn921882.aspx
 Query JSON Data with Built-in Functions (SQL Server)
https://msdn.microsoft.com/en-us/library/dn921890.aspx
CTP 3.0
PolyBase
2015/11/21SQL Server 2016 CTP 3.0 新機能32
 Microsoft Analytics Platform System (APS) の SQL Server Parallel Data Warehouse (PDW) の Polybase の機能
を SQL Server で利用可能
 https://www.microsoft.com/ja-jp/server-cloud/products/analytics-platform-system/Explore.aspx
 大量データの効率的な処理のためスケールアウト対応
 Hadoop / Azure BLOB ストレージに対して SQL によるデータ参照が可能
 BLOB ストレージはテーブル非対応でストレージに対して格納されたファイルに対してのクエリ実行
 CTAS (CREATE TABLE AS SELECT) による外部データソースへのエクスポートサポート
 INSERT (Transact-SQL)
https://msdn.microsoft.com/en-us/library/ms174335(v=sql.130).aspx
 インストール時の注意点
 JRE 7.51 以上をインストール
 照合順序は SQL_Latin1_General_CP1_CI_AS / Latin1_General_100_CI_AS_KS_WS 以外でも動作可能
 In SQL16 CTP2.4, the PolyBase feature will support all SQL Server collations.
 https://msdn.microsoft.com/en-US/library/bb510411.aspx#bkPolyBase
 PolyBase
https://msdn.microsoft.com/en-us/library/mt143171.aspx
CTP 3.0
CTP 3.0
CTP 3.0
スケールアウト構成への対応
2015/11/21SQL Server 2016 CTP 3.0 新機能33
 PolyBase groups for scale-out computation
https://msdn.microsoft.com/en-us/library/mt607030.aspx
CTP 3.0
Stretch Database
2015/11/21SQL Server 2016 CTP 3.0 新機能34
 ローカルデータベースのテーブルに追加されたデータを SQL Database に自動的に移動
 SQL Database は v12 を使用 / デフォルトでは S3 サイズの DB が作成される
 ローカルデータベースのテーブルの検索時には、透過的に SQL Database のテーブルをリ
モートクエリにより検索される
 利用者はどこにデータがあるかを意識しないでよい
 機能を有効にしたテーブルに対してはいくつかの制限がある
(以下は一例)
 プライマリーキー / 一意制約は適用されない
 UPDATE / DELETE ができない
 CREATE INDEX / DROP INDEX は可能だが、ALTER INDEX は実行できない
 FILESTREM / File Table / CDC / メモリ最適化テーブルには適用できない
 利用できるデータ型にも制限がある
 timestamp / sql_variant / XML / 位置データ型等は非対応
 AlwaysOn / Always Encrypted のサポート
 Stretch Database
 https://msdn.microsoft.com/en-us/library/dn935011.aspx
CTP 3.0
CTP 3.0
2015/11/21SQL Server 2016 CTP 3.0 新機能35
Stretch Database
- SQL Database へ自動的なデータのアーカイブ -
SQL Server SQL Databaseデータの追加
バックグラウンドで
SQL Database にデータを移動
最初のデータは
SQL Server に格納
SQL Server SQL Databaseデータの参照
リモートクエリで透過的に
SQL Database を検索
SQL Server にクエリを実行
Transact-SQL Enhancements
2015/11/21SQL Server 2016 CTP 3.0 新機能36
Transact-SQL Enhancements
2015/11/21SQL Server 2016 CTP 3.0 新機能37
 インデックス項目の拡張
 インデックスキーを 16 → 32 設定可能に
 非クラスター化インデックスを 900 → 1,700 バイト設定可能
 CREATE INDEX (Transact-SQL)
https://msdn.microsoft.com/en-us/library/ms188783.aspx
 パーティション単位で Truncate Table を実行可能
 WITH (PARTITIONS (0))
 TRUNCATE TABLE (Transact-SQL)
https://msdn.microsoft.com/en-us/library/ms177570(v=sql.130).aspx
 ALTER COLUMN のオンライン操作が可能
 WITH (ONLINE=ON)
 ALTER TABLE (Transact-SQL)
https://msdn.microsoft.com/en-us/library/ms190273(v=sql.130).aspx
 DROP IF によるオブジェクト存在時の削除
 DROP TABLE IF EXISTS hogehoge
 DBCC の MAXDOP オプションの追加
 DBCC CHECKDB WITH MAXDOP = 1
 CHECKTABLE / CHECKDB / CHECKFILEGROUP で利用可能
CTP 3.0
CTP 3.0
Security Enhancements
2015/11/21SQL Server 2016 CTP 3.0 新機能38
Security Enhancements
2015/11/21SQL Server 2016 CTP 3.0 新機能39
 SQL Database v12 でプレビュー搭載されている機能のオンプレミス版
 Row-Level Security
 透過的にフィルターを設定することで、特定条件にマッチするデータのみを取得可能にする
 セキュリティ述語関数を通してフィルターする
 INSERT / UPDATE / DELETE については、ブロック述語を使用して制限をする
 ADD BLOCK PREDICATE AFTER INSERT / UPDATE : ルールに一致しないデータを「作り出すこと」を制限
 ADD BLOCK PREDICATE BEFORE UPDATE /DELETE : ルールに一致しないデータを「操作すること」を制限
 BEFORE は FILTER 側で制限することもできるが、参照は許可するが変更/削除は許可しないというルールを作れる
権限による制御よる制御はテーブル単位の制御だが、ブロック述語は関数ベースのため、細かな調整が可能
 スキーマバインドしないセキュリティポリシーの作成
 SCHEMABINDING=OFF でポリシーを設定可能
 Row-Level Security
https://msdn.microsoft.com/en-us/library/dn765131.aspx
 Dynamic Data Masking
 特定の列のデータを取得時に透過的にマスクすることでセキュリティ向上させる
 格納されているデータはマスクされていない状態
 互換性レベル 130 が必要
 UNMASK の権限を持っているユーザーについてはマスクされていない状態でデータを取得可能
 SQL Database v12 ではポータルから設定していたが、SQL Server 2016 では T-SQL で設定
 Dynamic Data Masking
https://msdn.microsoft.com/en-us/library/mt130841.aspx
CTP 3.0
CTP 3.0
2015/11/21SQL Server 2016 CTP 3.0 新機能40
 行レベルセキュリティ
 動的データマスク
Security Enhancements
- 行レベルセキュリティ / 動的データマスク -
Col1 Col2 Col3
1 10000 UserA
2 20000 UserA
3 30000 UserB
UserA
Col1 Col2 Col3
1 10000 UserA
2 20000 UserA
SELECT * FROM Table
フィルター
Col1 Col2 Col3
1 10000 UserA
2 20000 UserA
3 30000 UserB
UserA
Col1 Col2 Col3
1 xxxxx UserA
2 xxxxx UserA
3 xxxxx UserB
新しい列の設定
SELECT * FROM Table
High Availability Enhancements
2015/11/21SQL Server 2016 CTP 3.0 新機能41
High Availability Enhancements
2015/11/21SQL Server 2016 CTP 3.0 新機能42
 AlwaysOn 可用性グループの機能拡張
 Standard Edition で AlwaysOn 可用性グループの利用
 ロードバランシングされた読み取り専用レプリカ
 自動フェールオーバーノードを 2 → 3 に設定可能
 分散トランザクションのサポート
https://msdn.microsoft.com/en-us/library/ms366279.aspx#dtcsupport
 Windows Server 2016 Technical Preview 2 で動作している必要がある
 データベース ミラーリングまたは AlwaysOn 可用性グループではサポートされない複数デー
タベースにまたがるトランザクション (SQL Server)
https://msdn.microsoft.com/ja-jp/library/ms366279.aspx
 データベース レベルの正常性検出
 データベースがオフラインになった状態を検知しフェールオーバーが可能に
 Windows Server 2016 のワークグループクラスター上で AlwaysOn 可用性グループを実
行可能
 AlwaysOn Failover Cluster で Gropu Managed Service Accounts (gMSA) をサポート
https://support.microsoft.com/kb/2998082/
Standard Edition で AlwaysOn 可用性グループ
2015/11/21SQL Server 2016 CTP 3.0 新機能43
 2014 までは Enterprise Edition で利用可能
 2016 からは Standard で基本的な可用性グループを利用可能だが制限がある
 2 ノードで構成 (Enterprise Edition は 8 ノードで構成可能)
 可用性グループに含められるデータベースは 1 つのみ
 セカンダリで読み取り / バックアップ取得は使用不可
 データベーススナップショットを使用することで読み取り可能
 リスナーを作成できない
 単一のアクセスポイントを使用した透過的な接続ができない
 データベースミラーリングと近い利用方法となる
 ミラーリングと異なり非同期モードでも利用可能
2015/11/21SQL Server 2016 CTP 3.0 新機能44
 Enterprise AlwaysOn
 Standard AlwaysOn (基本的な可用性グループ)
High Availability Enhancements
- Standard AlwaysOn -
リスナー
SQL Server
(セカンダリ)
可用性グループ
データベース
データベース
SQL Server
(プライマリ)
可用性グループ
データベース
データベース
アプリケーション
リスナーが作成できないため
データベースミラーリングの接続文字列を利用
DataSource=ServerA;Failover Partner=ServerB
SQL Server
(セカンダリ)
可用性グループ
データベース
SQL Server
(プライマリ)
可用性グループ
データベース
アプリケーション
リスナーを介して
透過的にプライマリに接続
ロードバランシングされた読み取り専用レプリカ
2015/11/21SQL Server 2016 CTP 3.0 新機能45
 2014 まではルールに応じた読み取りセカンダリへの接続
 READ_ONLY_ROUTING_LIST = ('Server1','Server2', 'Server3', 'Server4')
 Server 1 に接続できない場合は Server2、2 に接続できない場合は 3
 2016 ではロードバランシングされたセカンダリへの接続が可能
 READ_ONLY_ROUTING_LIST = (('Server1','Server2'), 'Server3', 'Server4')
 Server1 または、Server2 に接続、接続できない場合は Server3
 Configure load-balancing across read-only replicas
https://msdn.microsoft.com/en-us/library/hh710054.aspx#loadbalancing
2015/11/21SQL Server 2016 CTP 3.0 新機能46
 2014 まで
ALTER AVAILABILITY GROUP [AlwaysOnAG]
MODIFY REPLICA ON N'SQL-2016-01'
WITH ( PRIMARY_ROLE(READ_ONLY_ROUTING_LIST=(N'SQL-2016-02',N'SQL-2016-03',N'SQL-2016-04') ))
 2016 のロードバランシングされた読み取り専用レプリカ
ALTER AVAILABILITY GROUP [AlwaysOnAG]
MODIFY REPLICA ON N'SQL-2016-02'
WITH ( PRIMARY_ROLE(READ_ONLY_ROUTING_LIST=((N'SQL-2016-01',N'SQL-2016-03'),N'SQL-2016-04') ))
High Availability Enhancements
- ロードバランシングされた読み取り -
Advanced Analytics
2015/11/21SQL Server 2016 CTP 3.0 新機能47
Revolution R の SQL Server への統合
2015/11/21SQL Server 2016 CTP 3.0 新機能48
 Revolution R を SQL Server に統合することで R 言語をサポート
 Advanced Analytics Extensions の機能をインストール
 SQL Server Launchpad サービスが追加され、Revolution R と連携される
 Revolution R Open 3.2.2 for Revolution R Enterprise 7.5.0 をインストール
 Revolution R Enterprise 7.5. をインストール
 Installing SQL Server R Services
https://msdn.microsoft.com/en-US/library/mt604883.aspx
 sp_execute_external_script による R スクリプトの実行
 sp_execute_external_script (Transact-SQL)
https://msdn.microsoft.com/en-us/library/mt604368.aspx
 SQL Server R Services
https://msdn.microsoft.com/en-us/library/mt604845.aspx
 SQL Server R Services Tutorials
 https://msdn.microsoft.com/en-us/library/mt591993.aspx
CTP 3.0

Sql server 2016 ctp 3.0 新機能

  • 1.
    SQL Server 2016CTP 3.0 新機能 2015/11/21
  • 2.
    はじめに 2015/11/21SQL Server 2016CTP 3.0 新機能2 2015/11/21 時点の DL 可能な最新バージョンである SQL Server 2016 CTP 2.4 の情報を元に作成しています RTM 時には変更されている可能性がありますので時期に 応じた、最新の情報を参照してください
  • 3.
    SQL Server 2016関連情報 2015/11/21SQL Server 2016 CTP 3.0 新機能3  ダウンロード  SQL Server 2016 Community Technology Preview 3.0.  https://www.microsoft.com/en-us/evalcenter/evaluate-sql-server-2016  Download SQL Server Management Studio  https://msdn.microsoft.com/en-us/library/mt238290.aspx  技術情報  SQL Server 2016 Release Notes  https://msdn.microsoft.com/en-us/library/dn876712.aspx  SQL Server 2016  https://www.microsoft.com/en-us/server-cloud/products/sql-server-2016/default.aspx  SQL Server 2016 CTP Technical Deep Dive  http://www.slideshare.net/idigdata/sql-server-2016-ctp-technical-deep-dive  SQL Server 2016 CTP New Features - 9 June 2015 08:01  http://smooth1.co.uk/sqlserver2016/2016_CTP.html  SQL Server 2016 Community Technology Preview 3.0 is available  http://blogs.technet.com/b/dataplatforminsider/archive/2015/10/28/sql-server-2016-community-technology-preview-3-0-is-available.aspx  デモスクリプト  https://github.com/MasayukiOzawa/SQLServer2016DemoScript
  • 4.
    SQL Server 2016関連情報 2015/11/21SQL Server 2016 CTP 3.0 新機能4  What’s New  What‘s New in Database Engine  https://msdn.microsoft.com/en-us/library/bb510411.aspx  What's New in Analysis Services  https://msdn.microsoft.com/en-us/library/bb522628.aspx  What's New in Integration Services  https://msdn.microsoft.com/en-us/library/bb522534.aspx  What's New in Reporting Services  https://msdn.microsoft.com/en-us/library/ms170438.aspx  What's New in Master Data Services  https://msdn.microsoft.com/en-us/library/ff929136.aspx  What‘s New (Replication)  https://msdn.microsoft.com/en-us/library/bb500342.aspx  ALTER DATABASE Compatibility Level (Transact-SQL)  https://msdn.microsoft.com/ja-jp/library/bb510680(v=sql.130).aspx  R 言語の対応については CTP3.0 で実装  What‘s New in SQL Server R Services https://msdn.microsoft.com/en-us/library/mt604847.aspx  CTP 2.4  http://blogs.technet.com/b/dataplatforminsider/archive/2015/09/30/sql-server-2016-community-technology-preview-2-4-is- available.aspx 本スライドのカバー範囲 CTP 3.0
  • 5.
    What‘s New inDatabase Engine 2015/11/21SQL Server 2016 CTP 3.0 新機能5  主要な変更点  Database Engine Feature Enhancements  Transact-SQL Enhancements  Security Enhancements  High Availability Enhancements  Advanced Analytics  Tools Enhancements  .NET Framework 4.6 (Database Engineでは、3.5 SP1 も必要となる)  単体での SSMS の提供  Express で完全版の SSMS ではなく、SSMS のスタンドアロンインストーラーを提供  Download SQL Server Management Studio https://msdn.microsoft.com/en-us/library/mt238290.aspx  SSMS に SQL Database を Azure AD で認証するための以下の方式が追加  Active Directory パスワード認証  Active Directory Integrated Authentication  x86 サーバーの廃止  サーバーコンポーネントの x86 サポートが廃止  現時点では、Express Edition についても x64 のみとなっている https://msdn.microsoft.com/en-us/library/ms143506.aspx
  • 6.
    Database Engine FeatureEnhancements 2015/11/21SQL Server 2016 CTP 3.0 新機能6
  • 7.
    Database Engine FeatureEnhancements 2015/11/21SQL Server 2016 CTP 3.0 新機能7  Columnstore Indexes  In-Memory OLTP  Live Query Statistics  Query Store  Temporal Tables  Backup to Microsoft Azure  Managed Backup  Trace Flag 4199  Multiple TempDB Database Files  インストール時に CPU コア数に合わせて、最大で 8 データファイルを設定した状態でインストール (/SQLTEMPDBFILECOUNT オプションの追加)  FOR JSON  Always Encrypted  PolyBase  Stretch Database
  • 8.
    Columnstore Indexes 2015/11/21SQL Server2016 CTP 3.0 新機能8  シングルスレッドでのバッチモード処理  2014 まではマルチスレッドの場合のみバッチモードで処理が行われていた  互換性レベル 130 が必要 (互換性レベル 120/ 130によって使用できるパフォーマンス拡張の範囲に差がある) https://msdn.microsoft.com/ja-jp/library/bb510680(v=sql.130).aspx  READ_COMMITTED_SNAPSHOT / ALLOW_SNAPSHOT_ISOLATION のサポート  列ストアインデックスでロック競合を抑えた読み取り処理が可能  CREATE TABLE 時に列ストアインデックスを設定可能 (インラインインデックス作成)  2014 まではテーブル作成 → 列ストアインデックスを追加  非クラスター化列ストアインデックスに対して更新が可能  Columnstore Indexes for Operational Analytics  https://msdn.microsoft.com/en-us/library/dn817827.aspx  Btree + クラスター化列ストアインデックスの組み合わせが可能 一意制約 / 外部キー制約も設定可能  リアルタイムなデータ検索を目指し、列ストアインデックスとメモリ最適化テーブルを組み合わせて使用可能  変更等のデータはメモリ最適化テーブルに格納し、バックグラウンドタスクで列ストアインデックスに移行  フィルター化された非クラスター化列ストアインデックスを作成可能  列ストア + 行ストアまたは、メモリ最適化テーブル の 2 種類のデータを保持する  Columnstore Indexes Versioned Feature Summary https://msdn.microsoft.com/en-us/library/dn934994.aspx
  • 9.
    Columnstore Indexes -シングルスレッドでのバッチモード処理 - 2015/11/21SQLServer 2016 CTP 3.0 新機能9 SELECT O_CUSTKEY,COUNT(*) FROM ORDERS_CI GROUP BY O_CUSTKEY OPTION (MAXDOP 1)  SQL Server 2014 まで  SQL Server 2016 から (互換性レベル 130)
  • 10.
     従来のクラスター化列ストアインデックス  クラスター化列ストアインデックス+ メモリ最適化テーブル 2015/11/21SQL Server 2016 CTP 3.0 新機能10 Columnstore Indexes - 列ストアインデックス + メモリ最適化テーブル - 列ストア 行ストア ディスクベーステーブル In-Memory OLTP 列ストア 100万行で 列ストアに圧縮 メモリ最適化テーブル ディスクベーステーブル 追加データ 追加データ 100万行で 列ストアに圧縮
  • 11.
    2015/11/21SQL Server 2016CTP 3.0 新機能11 行ストア 列ストア メモリ最適化 クラスター化 非クラスター化 クラスター化 非クラスター化 ハッシュ 非クラスター化 行ストア クラスター化 ○ × ○ 2016 から × 非クラスター化 ○ 2016 から ○ 2016 から × 列ストア クラスター化 × ○ 2016 から ○ 2016 から 非クラスター化 ○ 2016 から ○ 2016 から × × メモリ最適化 ハッシュ × ○ 2016 から × 非クラスター化 Columnstore Indexes - SQL Server 2016 のインデックスの組み合わせ -
  • 12.
    In-Memory OLTP 1/2 2015/11/21SQLServer 2016 CTP 3.0 新機能12  1DB の持続性のあるテーブルの合計サイズのサポートが 256 GB → 2TB に変更  コンテナー単位に 1 つのオフラインチェックポイントスレッドの生成  オフラインチェックポイントスレッドがネックになるスケールリミットの緩和  2 ソケット / 64 コア以上でも性能が発揮できる (SQL Server 2014 は 2 または 4 ソケットおよび 60 未満の コアのシステムを想定している) https://msdn.microsoft.com/ja-jp/library/dn170449(v=sql.120).aspx  ストレージ管理を FILESTERAM からの分離  2014 では、チェックポイントファイル (データファイル / デルタファイル) が FILESTREAMに基づいて処理さ れていた  $HKv2 ディレクトリに永続化ファイルが作成される  メモリ最適化テーブルに対しての TDE のサポート  ALTER による変更のサポート  メモリ最適化テーブル (オフラインオペレーションのため、対象テーブルに対してメモリが倍必要となる) / ネイ ティブコンパイルストアドプロシージャの定義変更が可能  Multiple Active Result Set (MARS) のサポート  ネイティブコンパイルストアドプロシージャ内でユーザー定義関数(スカラー値関数)の 呼び出しをサポート (WITH NATIVE_COMPILATION を指定した関数を作成)  CREATE FUNCTION (Transact-SQL) https://msdn.microsoft.com/en-us/library/ms186755.aspx
  • 13.
    In-Memory OLTP 2/2 2015/11/21SQLServer 2016 CTP 3.0 新機能13  照合順序の制限の緩和  https://msdn.microsoft.com/en-us/library/dn133182.aspx  非 Unicode 文字列に 1252 (Latin) 以外の照合順序を指定可能  インデックスキーに BIN2 以外の照合順序を指定可能  T-SQL のサポート範囲の増加 (ネイティブコンパイルストアドプロシージャでの OUTER JOIN / UNION サポート等)  SQL Server 2014 での制限は以下 インメモリ OLTP でサポートされていない Transact-SQL の構造 https://msdn.microsoft.com/ja-jp/library/dn246937(v=sql.120).aspx  DML トリガーのサポート  FOR / AFTER トリガーのサポート  ネイティブコンパイルモジュールとして作成 / 結果を返すクエリはサポートされない  FOREIEIGN KEY / CHECK / UNIQUE 制約のサポート  参照整合性制約は参照テーブルの主キーに対して設定 / メモリ最適化テーブル間のみ可能 / CASCADE の指定はできない  メモリ最適化テーブルで並列クエリのサポート (互換性レベル 130)  Memory optimized table queries can have parallel plans. https://msdn.microsoft.com/en-us/library/dn934994.aspx  In-Memory OLTP https://msdn.microsoft.com/en-us/library/bb510411.aspx#InMemory  In-Memory OLTP (In-Memory Optimization) https://msdn.microsoft.com/en-us/library/dn133186.aspx  In-Memory OLTP – The faster is now simpler! http://www.sqlshack.com/in-memory-oltp-the-faster-is-now-simpler/ CTP 3.0 CTP 3.0
  • 14.
    2015/11/21SQL Server 2016CTP 3.0 新機能14  SQL Server 2014  SQL Server 2016 In-Memory OLTP - ストレージ管理の変更 -
  • 15.
    In-Memory OLTP - 並列クエリのサポート- 2015/11/21SQL Server 2016 CTP 3.0 新機能15 SELECT O_CUSTKEY,COUNT(*) FROM ORDERS GROUP BY O_CUSTKEY ORDER BY O_CUSTKEY DESC  SQL Server 2014  SQL Server 2016 (互換性レベル 130)
  • 16.
    Live Query Statistics 2015/11/21SQLServer 2016 CTP 3.0 新機能16  実行中のクエリに対して、実行プランがどこまで完了したかを表示する機能  推定実行プラン : 実行前 / 実際の実行プラン : 実行後 とは違い実行中  クエリエディタと利用状況モニターから確認可能  SQL Server 2014 (SP1 で確認) / SQL Database v12 に対して使用可能  利用状況モニターでは、以下の条件を満たすことで他のセッションに対して 使用可能  SET STATISTICS XML ON / SET STATISTICS PROFILE ON が実行されている  query_post_execution_showplan 拡張イベントを使用できる  列ストアインデックス / メモリ最適化テーブル / ネイティブコンパイルスト アドプロシージャでは非サポート  Live Query Statistics https://msdn.microsoft.com/en-us/library/dn831878.aspx
  • 17.
    2015/11/21SQL Server 2016CTP 3.0 新機能17  実際の実行プラン  ライブクエリ統計 Live Query Statistics - 実行中のクエリのプラン表示 -
  • 18.
    Query Store 2015/11/21SQL Server2016 CTP 3.0 新機能18  コンパイル時と実行時の情報をクエリー ストアに格納することで、実行されたタイ ミングのクエリの情報を確認することができる  Plan Store : 実行プラン / Runtime Stats : 実行時間等の情報  同一クエリで実行プランが途中で変更された場合、各実行プランごとにクエリの実 行状態を取得することが可能  プランキャッシュは最新の実行プランだが、クエリー ストアは実行されたタイミングのプ ランを確認できる  特定の実行プランを強制することができる  類似の機能にプラン ガイドがあるが、クエリー ストアの方がシンプルな操作で適用する ことが可能 (クエリー ストアに使用したいプランの情報が取得されている必要があるが)  インメモリ OLTP への対応  ネイティブコンパイルモジュールのクエリ情報も取得される  Monitoring Performance By Using the Query Store https://msdn.microsoft.com/en-us/library/dn817826.aspx CTP 3.0
  • 19.
    Query Store 2015/11/21SQL Server2016 CTP 3.0 新機能19 SQL コンパイル 実行 プランストア 実行統計 クエリーストア スキーマ クエリーストア コンパイル メッセージ 実行 メッセージ 非同期 書き込み
  • 20.
    2015/11/21SQL Server 2016CTP 3.0 新機能20 Query Store - 同一クエリの実行プランの変化の確認 -
  • 21.
    Temporal Tables 2015/11/21SQL Server2016 CTP 3.0 新機能21  ANSI SQL:2011 規格であり、SQL Server 固有の機能ではない  トランザクション時間 / データの有効期間を SysStartTime / SysEndTime とし持つことで、自動的なデータアーカイブ と変更履歴の追跡が可能  特定の期間のデータや、全期間のデータを確認可能  CTP3 で期間の指定方法が拡張されている  HIDDEN を設定することで、SysStartTime/SysEndTimeを非表示項目に設定可能  システムバージョン管理されたテーブル / 履歴テーブルの二つで構成され、透過的に二つのテーブルを操作するこ とができる  システムバージョン管理されたテーブルには最新のデータが格納されている  データを変更すると、変更前のデータが自動的に履歴テーブルに追加される  デフォルトでは履歴テーブルにページ圧縮が行われている  Truncate Table は実行することができない  In-Memory OLTP と組み合わせることが可能  SCHEMA_AND_DATA のみ可能  ALTER TABLE のサポート  Temporal Tables  https://msdn.microsoft.com/en-us/library/dn935015.aspx  System-Versioned Temporal Tables with Memory-Optimized Tables  https://msdn.microsoft.com/en-us/library/mt590207.aspx CTP 3.0 CTP 3.0 CTP 3.0
  • 22.
    2015/11/21SQL Server 2016CTP 3.0 新機能22  テーブルの構造  テーブルの操作 Temporal Tables - 基本的な構成 - INSERT UPDATE DELETE 変更前のデータを履歴に追加 システム バージョン管理されたテーブル SELECT * FROM Table データの参照 履歴テーブル 最新データを参照 システム バージョン管理されたテーブル 履歴テーブル システム バージョン管理されたテーブル SELECT * FROM Table FOR SYSTEMTIME データの参照 履歴テーブル 透過的に特定タイミングのデータを参照 データの変更
  • 23.
    Multiple TempDB DatabaseFiles 2015/11/21SQL Server 2016 CTP 3.0 新機能23  インストール時に TempDB のデータファイルを最適化  データファイル数 : 8 または CPU コアの小さい方 を初期値として設定 (8 また は CPU コアの大きい方が最大数)  GUI / 構成ファイルが複数 tempdb に対応 ; データベース エンジンの TempDB ファイルの数。 SQLTEMPDBFILECOUNT="2" ; データベース エンジン TempDB データ ファイルの初期サイズを MB 単位で指定します。 SQLTEMPDBFILESIZE="8" ; 各データベース エンジン TempDB データ ファイルの自動拡張増分値を MB 単位で指定します。 SQLTEMPDBFILEGROWTH="64" ; データベース エンジン TempDB ログ ファイルの初期サイズを MB 単位で指定します。 SQLTEMPDBLOGFILESIZE="8" ; 各データベース エンジン TempDB ログ ファイルの自動拡張増分値を MB 単位で指定します。 SQLTEMPDBLOGFILEGROWTH="64"
  • 24.
    Instant File Initializationsetting for engine setup 2015/11/21SQL Server 2016 CTP 3.0 新機能24  インストール時に瞬時初期化の有効化が可能に。  http://blogs.technet.com/b/dataplatforminsider/archive/2015/10/28/sql-server-2016-community-technology-preview-3-0-is-available.aspx  SQLSVCINSTANTFILEINIT = TRUE オプションが追加  https://msdn.microsoft.com/en-us/library/ms144259(v=sql.130).aspx CTP 3.0
  • 25.
    Backup to MicrosoftAzure 2015/11/21SQL Server 2016 CTP 3.0 新機能25  SQL Server 2012 SP1 CU2 で追加された、Azure ストレージにバックアップ取得機能の拡張  ブロック BLOB に対してバックアップを取得することが可能となった  以前のバージョンはページ BLOB に対してバックアップを取得  複数のファイルにストライプして取得できない  バックアップファイルの最大サイズが 1TB  ブロック BLOB に対して取得することで以下が可能  複数のファイルにストライプして取得できる (各ファイルの最大サイズは 200GB)  複数のファイルにストライプして取得することでバックアップ / リストア性能の向上  バックアップファイルの最大サイズが 12.8 TB  資格情報の指定方法が異なる  ページ BLOB  ストレージアカウント / ストレージアカウントキー  ブロック BLOB  ストレージアカウント / SAS トークン  SQL Server Backup to URL https://msdn.microsoft.com/en-US/library/dn435916.aspx
  • 26.
    2015/11/21SQL Server 2016CTP 3.0 新機能26  ページ BLOB にバックアップ CREATE CREDENTIAL [<資格情報名>] WITH IDENTITY = '<ストレージアカウント名>', SECRET = '<ストレージアカウント アクセスキー>' GO BACKUP DATABASE <データベース名> TO URL = 'https://<ストレージアカウント名>.blob.core.windows.net/<コンテナー名>/<バックアップ名>' WITH CREDENTIAL = '<資格情報名>' ,COMPRESSION, STATS = 5  ブロック BLOB にバックアップ CREATE CREDENTIAL [https://<ストレージアカウント名>.blob.core.windows.net/<コンテナー名>] WITH IDENTITY='SHARED ACCESS SIGNATURE', -- IDENTITY は固定 SECRET = '<sv= ~の SAS トークン>' BACKUP DATABASE TEST TO URL = 'https://<ストレージアカウント名>.blob.core.windows.net/<コンテナー名>/test_01_blockblob.bak', URL = 'https://<ストレージアカウント名>.blob.core.windows.net/<コンテナー名>/test_02_blockblob.bak' WITH COMPRESSION, STATS = 5 Backup to Microsoft Azure - 2 種類の取得方法 -
  • 27.
    Managed Backup 2015/11/21SQL Server2016 CTP 3.0 新機能27  保有期間の設定 (1~30日) に応じて、Azure 上に自動的に完全/ログバックアップを取 得する機能 https://msdn.microsoft.com/ja-jp/library/dn449496(v=sql.120).aspx#Concepts  Microsoft Azure への SQL Server マネージバックアップ  SQL Server 2014 で追加された管理対象バックアップの機能拡張  カスタムスケジュールのバックアップ設定が可能  2014 はデータの更新状況や前回バックアップからの経過時間に応じた自動バックアップのみサポート  managed_backup.sp_backup_config_schedule で設定  システムデータベースのバックアップをサポート  単純復旧モデルのデータベースのサポート  CTP 2 では SSMS の GUI ベースでの設定ができないため T-SQL / PowerShell で設定  SQL Server Managed Backup to Microsoft Azure https://msdn.microsoft.com/en-us/library/dn449496.aspx
  • 28.
    Trace Flag 4199 2015/11/21SQLServer 2016 CTP 3.0 新機能28  クエリオプティマイザ関連のトレースフラグ  今まで明示的に有効する必要のあった各種トレーフラグが、互換性レベル 130 では、デ フォルトで有効の状態となっている。 https://support.microsoft.com/ja-jp/kb/974006  4101~4111 / 4115~4117 / 4119~4122 / 4124~4129 / 4131 / 4133 / 4135
  • 29.
    Always Encrypted 2015/11/21SQL Server2016 CTP 3.0 新機能29  常に暗号化した状態でデータを操作するための機能  クエリの実行端末に Column Master Key (CMK) を配置  SQL Server に CMK から生成された Column Encryption Key (CEK) を配置  暗号化する列は、DETERMINISTIC (検索項目として使用可) / RANDOMIZED (検索項目として使用不可) の 2 種類を設定可能  クエリ実行時には通常のテキストで条件句を指定  実際に実行されるクエリは暗号化されたテキストで条件句が設定される (指定したテキストが透過的に暗号化されてクエリが生成される)  プロファイラー等でクエリをキャプチャしても、条件句は暗号化された状態  クエリの実行端末の条件  .NET Framework 4.6 (4.6 で拡張された ADO.NET のライブラリを使用)  HSM を使用する場合には、.NET Framework 4.6.1 を使用する  接続文字列に「Column Encryption Setting=enabled」を指定  暗号化された項目を検索条件とする場合は、SqlParameter オブジェクトを使用する  Always Encrypted (Database Engine) https://msdn.microsoft.com/en-us/library/mt163865.aspx
  • 30.
    2015/11/21SQL Server 2016CTP 3.0 新機能30 Always Encrypted - 常に暗号化した状態でのデータ操作 - アプリケーション Column Master Key (CMK) Enhanced ADO.NET Library SQL Server Column Encryption Setting=enabled Column Encryption Key (CEK) @Param = 'ABCDEFG' SELECT * FROM Table WHERE Col2 = @Param アプリケーションからは通常の文字列で検索 @Param = 1x7fg68 SELECT * FROM Table WHERE Col1 = @Param Col1 Col2 Col3 1 1x7fg68 JPN 2 0x7ff65e JPN 3 0y8fj75e USA Col1 Col2 Col3 1 1x7fg68 JPN Col1 Col2 Col3 1 ABCEDFG JPN SQL Server 側では暗号化された文字列で検索 (クエリキャッシュも暗号化された文字列でキャッシュ) データは暗号化された文字列で検索 (データキャッシュも暗号化された文字列でキャッシュ) 複合化された状態で見える 暗号化された状態で返却
  • 31.
    FOR JSON 2015/11/21SQL Server2016 CTP 3.0 新機能31  JSON 型が提供されるというわけではない  nvarchar 等に文字列データ型に JSON のデータを格納  SQL の実行結果を JSON として出力できる  FOR JSON  実行結果が大きい場合には複数行として結果が返されるため結合する  以下の機能 (JSON 関数) を CTP 3 から利用可能  OPEN JSON  ISJSON  JOSN_VALUE  Format Query Results as JSON with FOR JSON (SQL Server) https://msdn.microsoft.com/en-us/library/dn921882.aspx  Query JSON Data with Built-in Functions (SQL Server) https://msdn.microsoft.com/en-us/library/dn921890.aspx CTP 3.0
  • 32.
    PolyBase 2015/11/21SQL Server 2016CTP 3.0 新機能32  Microsoft Analytics Platform System (APS) の SQL Server Parallel Data Warehouse (PDW) の Polybase の機能 を SQL Server で利用可能  https://www.microsoft.com/ja-jp/server-cloud/products/analytics-platform-system/Explore.aspx  大量データの効率的な処理のためスケールアウト対応  Hadoop / Azure BLOB ストレージに対して SQL によるデータ参照が可能  BLOB ストレージはテーブル非対応でストレージに対して格納されたファイルに対してのクエリ実行  CTAS (CREATE TABLE AS SELECT) による外部データソースへのエクスポートサポート  INSERT (Transact-SQL) https://msdn.microsoft.com/en-us/library/ms174335(v=sql.130).aspx  インストール時の注意点  JRE 7.51 以上をインストール  照合順序は SQL_Latin1_General_CP1_CI_AS / Latin1_General_100_CI_AS_KS_WS 以外でも動作可能  In SQL16 CTP2.4, the PolyBase feature will support all SQL Server collations.  https://msdn.microsoft.com/en-US/library/bb510411.aspx#bkPolyBase  PolyBase https://msdn.microsoft.com/en-us/library/mt143171.aspx CTP 3.0 CTP 3.0 CTP 3.0
  • 33.
    スケールアウト構成への対応 2015/11/21SQL Server 2016CTP 3.0 新機能33  PolyBase groups for scale-out computation https://msdn.microsoft.com/en-us/library/mt607030.aspx CTP 3.0
  • 34.
    Stretch Database 2015/11/21SQL Server2016 CTP 3.0 新機能34  ローカルデータベースのテーブルに追加されたデータを SQL Database に自動的に移動  SQL Database は v12 を使用 / デフォルトでは S3 サイズの DB が作成される  ローカルデータベースのテーブルの検索時には、透過的に SQL Database のテーブルをリ モートクエリにより検索される  利用者はどこにデータがあるかを意識しないでよい  機能を有効にしたテーブルに対してはいくつかの制限がある (以下は一例)  プライマリーキー / 一意制約は適用されない  UPDATE / DELETE ができない  CREATE INDEX / DROP INDEX は可能だが、ALTER INDEX は実行できない  FILESTREM / File Table / CDC / メモリ最適化テーブルには適用できない  利用できるデータ型にも制限がある  timestamp / sql_variant / XML / 位置データ型等は非対応  AlwaysOn / Always Encrypted のサポート  Stretch Database  https://msdn.microsoft.com/en-us/library/dn935011.aspx CTP 3.0 CTP 3.0
  • 35.
    2015/11/21SQL Server 2016CTP 3.0 新機能35 Stretch Database - SQL Database へ自動的なデータのアーカイブ - SQL Server SQL Databaseデータの追加 バックグラウンドで SQL Database にデータを移動 最初のデータは SQL Server に格納 SQL Server SQL Databaseデータの参照 リモートクエリで透過的に SQL Database を検索 SQL Server にクエリを実行
  • 36.
  • 37.
    Transact-SQL Enhancements 2015/11/21SQL Server2016 CTP 3.0 新機能37  インデックス項目の拡張  インデックスキーを 16 → 32 設定可能に  非クラスター化インデックスを 900 → 1,700 バイト設定可能  CREATE INDEX (Transact-SQL) https://msdn.microsoft.com/en-us/library/ms188783.aspx  パーティション単位で Truncate Table を実行可能  WITH (PARTITIONS (0))  TRUNCATE TABLE (Transact-SQL) https://msdn.microsoft.com/en-us/library/ms177570(v=sql.130).aspx  ALTER COLUMN のオンライン操作が可能  WITH (ONLINE=ON)  ALTER TABLE (Transact-SQL) https://msdn.microsoft.com/en-us/library/ms190273(v=sql.130).aspx  DROP IF によるオブジェクト存在時の削除  DROP TABLE IF EXISTS hogehoge  DBCC の MAXDOP オプションの追加  DBCC CHECKDB WITH MAXDOP = 1  CHECKTABLE / CHECKDB / CHECKFILEGROUP で利用可能 CTP 3.0 CTP 3.0
  • 38.
  • 39.
    Security Enhancements 2015/11/21SQL Server2016 CTP 3.0 新機能39  SQL Database v12 でプレビュー搭載されている機能のオンプレミス版  Row-Level Security  透過的にフィルターを設定することで、特定条件にマッチするデータのみを取得可能にする  セキュリティ述語関数を通してフィルターする  INSERT / UPDATE / DELETE については、ブロック述語を使用して制限をする  ADD BLOCK PREDICATE AFTER INSERT / UPDATE : ルールに一致しないデータを「作り出すこと」を制限  ADD BLOCK PREDICATE BEFORE UPDATE /DELETE : ルールに一致しないデータを「操作すること」を制限  BEFORE は FILTER 側で制限することもできるが、参照は許可するが変更/削除は許可しないというルールを作れる 権限による制御よる制御はテーブル単位の制御だが、ブロック述語は関数ベースのため、細かな調整が可能  スキーマバインドしないセキュリティポリシーの作成  SCHEMABINDING=OFF でポリシーを設定可能  Row-Level Security https://msdn.microsoft.com/en-us/library/dn765131.aspx  Dynamic Data Masking  特定の列のデータを取得時に透過的にマスクすることでセキュリティ向上させる  格納されているデータはマスクされていない状態  互換性レベル 130 が必要  UNMASK の権限を持っているユーザーについてはマスクされていない状態でデータを取得可能  SQL Database v12 ではポータルから設定していたが、SQL Server 2016 では T-SQL で設定  Dynamic Data Masking https://msdn.microsoft.com/en-us/library/mt130841.aspx CTP 3.0 CTP 3.0
  • 40.
    2015/11/21SQL Server 2016CTP 3.0 新機能40  行レベルセキュリティ  動的データマスク Security Enhancements - 行レベルセキュリティ / 動的データマスク - Col1 Col2 Col3 1 10000 UserA 2 20000 UserA 3 30000 UserB UserA Col1 Col2 Col3 1 10000 UserA 2 20000 UserA SELECT * FROM Table フィルター Col1 Col2 Col3 1 10000 UserA 2 20000 UserA 3 30000 UserB UserA Col1 Col2 Col3 1 xxxxx UserA 2 xxxxx UserA 3 xxxxx UserB 新しい列の設定 SELECT * FROM Table
  • 41.
    High Availability Enhancements 2015/11/21SQLServer 2016 CTP 3.0 新機能41
  • 42.
    High Availability Enhancements 2015/11/21SQLServer 2016 CTP 3.0 新機能42  AlwaysOn 可用性グループの機能拡張  Standard Edition で AlwaysOn 可用性グループの利用  ロードバランシングされた読み取り専用レプリカ  自動フェールオーバーノードを 2 → 3 に設定可能  分散トランザクションのサポート https://msdn.microsoft.com/en-us/library/ms366279.aspx#dtcsupport  Windows Server 2016 Technical Preview 2 で動作している必要がある  データベース ミラーリングまたは AlwaysOn 可用性グループではサポートされない複数デー タベースにまたがるトランザクション (SQL Server) https://msdn.microsoft.com/ja-jp/library/ms366279.aspx  データベース レベルの正常性検出  データベースがオフラインになった状態を検知しフェールオーバーが可能に  Windows Server 2016 のワークグループクラスター上で AlwaysOn 可用性グループを実 行可能  AlwaysOn Failover Cluster で Gropu Managed Service Accounts (gMSA) をサポート https://support.microsoft.com/kb/2998082/
  • 43.
    Standard Edition でAlwaysOn 可用性グループ 2015/11/21SQL Server 2016 CTP 3.0 新機能43  2014 までは Enterprise Edition で利用可能  2016 からは Standard で基本的な可用性グループを利用可能だが制限がある  2 ノードで構成 (Enterprise Edition は 8 ノードで構成可能)  可用性グループに含められるデータベースは 1 つのみ  セカンダリで読み取り / バックアップ取得は使用不可  データベーススナップショットを使用することで読み取り可能  リスナーを作成できない  単一のアクセスポイントを使用した透過的な接続ができない  データベースミラーリングと近い利用方法となる  ミラーリングと異なり非同期モードでも利用可能
  • 44.
    2015/11/21SQL Server 2016CTP 3.0 新機能44  Enterprise AlwaysOn  Standard AlwaysOn (基本的な可用性グループ) High Availability Enhancements - Standard AlwaysOn - リスナー SQL Server (セカンダリ) 可用性グループ データベース データベース SQL Server (プライマリ) 可用性グループ データベース データベース アプリケーション リスナーが作成できないため データベースミラーリングの接続文字列を利用 DataSource=ServerA;Failover Partner=ServerB SQL Server (セカンダリ) 可用性グループ データベース SQL Server (プライマリ) 可用性グループ データベース アプリケーション リスナーを介して 透過的にプライマリに接続
  • 45.
    ロードバランシングされた読み取り専用レプリカ 2015/11/21SQL Server 2016CTP 3.0 新機能45  2014 まではルールに応じた読み取りセカンダリへの接続  READ_ONLY_ROUTING_LIST = ('Server1','Server2', 'Server3', 'Server4')  Server 1 に接続できない場合は Server2、2 に接続できない場合は 3  2016 ではロードバランシングされたセカンダリへの接続が可能  READ_ONLY_ROUTING_LIST = (('Server1','Server2'), 'Server3', 'Server4')  Server1 または、Server2 に接続、接続できない場合は Server3  Configure load-balancing across read-only replicas https://msdn.microsoft.com/en-us/library/hh710054.aspx#loadbalancing
  • 46.
    2015/11/21SQL Server 2016CTP 3.0 新機能46  2014 まで ALTER AVAILABILITY GROUP [AlwaysOnAG] MODIFY REPLICA ON N'SQL-2016-01' WITH ( PRIMARY_ROLE(READ_ONLY_ROUTING_LIST=(N'SQL-2016-02',N'SQL-2016-03',N'SQL-2016-04') ))  2016 のロードバランシングされた読み取り専用レプリカ ALTER AVAILABILITY GROUP [AlwaysOnAG] MODIFY REPLICA ON N'SQL-2016-02' WITH ( PRIMARY_ROLE(READ_ONLY_ROUTING_LIST=((N'SQL-2016-01',N'SQL-2016-03'),N'SQL-2016-04') )) High Availability Enhancements - ロードバランシングされた読み取り -
  • 47.
  • 48.
    Revolution R のSQL Server への統合 2015/11/21SQL Server 2016 CTP 3.0 新機能48  Revolution R を SQL Server に統合することで R 言語をサポート  Advanced Analytics Extensions の機能をインストール  SQL Server Launchpad サービスが追加され、Revolution R と連携される  Revolution R Open 3.2.2 for Revolution R Enterprise 7.5.0 をインストール  Revolution R Enterprise 7.5. をインストール  Installing SQL Server R Services https://msdn.microsoft.com/en-US/library/mt604883.aspx  sp_execute_external_script による R スクリプトの実行  sp_execute_external_script (Transact-SQL) https://msdn.microsoft.com/en-us/library/mt604368.aspx  SQL Server R Services https://msdn.microsoft.com/en-us/library/mt604845.aspx  SQL Server R Services Tutorials  https://msdn.microsoft.com/en-us/library/mt591993.aspx CTP 3.0