SQL Server 2017 の新機能をざっくりまとめたものとなります。
docs.com にも同一の内容をおいていますので、PDF で見たい場合などはこちらをご利用ください。
わかった気になれるかもしれない SQL Server 2017 新機能
Contents
全体
- What’s New in SQL Server vNext
https://msdn.microsoft.com/en-us/library/mt788653.aspx - What’s new for SQL Server vNext on Linux
https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-whats-new- SQL Server on Linux の未サポートの機能は、以下を参照
https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-release-notes
- SQL Server on Linux の未サポートの機能は、以下を参照
- SQL Server vNext Release Notes
https://msdn.microsoft.com/en-us/library/mt788652.aspx
SQL Server Management Studio
17.0
- SQL Server v.Next への対応
- Always Encrypted のパラメーター化
https://msdn.microsoft.com/ja-jp/library/mt757096.aspx
- Parameterization for Always Encrypted ? Using SSMS to Insert into, Update and Filter by Encrypted Columns
https://blogs.msdn.microsoft.com/sqlsecurity/2016/12/13/parameterization-for-always-encrypted-using-ssms-to-insert-into-update-and-filter-by-encrypted-columns/
- SQL Database の Azure Active Directory ユニバーサル認証のサポート
- Azure Active Directory 認証を使用して SQL Database または SQL Data Warehouse に接続する
https://docs.microsoft.com/ja-jp/azure/sql-database/sql-database-aad-authentication
- Azure Active Directory 認証を使用して SQL Database または SQL Data Warehouse に接続する
- SQL Database のフルテキスト検索/ロール/データベース作成のスクリプト生成のサポート
- ユーティリティコントロールポイントの UI の削除
- プレゼンターモードの追加
- クイック起動で Present を入力することで起動できる
- SSMS Presenter Mode
https://blobeater.blog/2017/02/22/ssms-presenter-mode/
- クエリプランの比較で基数推定の違いを確認可能
参考情報
- SQL Server Management Studio (SSMS) – Release Candidate
https://docs.microsoft.com/en-us/sql/ssms/sql-server-management-studio-ssms-release-candidate
データベースエンジン
CTP 1.0
- 互換性レベル 140 の追加
- ALTER DATABASE (Transact-SQL) Compatibility Level
https://msdn.microsoft.com/en-us/library/bb510680.aspx
- ALTER DATABASE (Transact-SQL) Compatibility Level
- 増分統計の更新の閾値の計算方法の改善 (互換性レベル 140)
- SQL Server 2016 SP1 で追加された増分統計向けの DMV については以下の情報
- sys.dm_db_incremental_stats_properties
https://msdn.microsoft.com/ja-jp/library/mt761751.aspx
- sys.dm_db_incremental_stats_properties
- SQL Server 2016 SP1 で追加された増分統計向けの DMV については以下の情報
- sys.dm_exec_query_statistics_xml による、実行中のクエリの実行プランの取得
- SQL Server 2016 SP1 で追加されているものが SQL Server 2017 でも追加された
- sys.dm_exec_query_statistics_xml
https://msdn.microsoft.com/ja-jp/library/mt791503.aspx
- sys.dm_exec_query_statistics_xml
- SQL Server 2016 SP1 で追加されているものが SQL Server 2017 でも追加された
- In-Memory OLTP のサポートの拡充
- メモリ最適化テーブルで sp_spaceused をサポート
- ネイティブ モジュールで sp_rename をサポート
- ネイティブ モジュールで CASE ステートメントをサポート
- インメモリ テーブルで 8 個のインデックス制限がなくなった
- ネイティブ モジュールで TOP (N) WITH TIES をサポート
- 一部のケースで、インメモリ テーブルに対する ALTER TABLE が速度向上
- インメモリ テーブルのトランザクションのロールバックが並列で行われ、フェールオーバーや (一部のケースで) 再起動にかかる時間が大幅に短縮
- インメモリ チェックポイント ファイルを Azure Storage に保存可能となり、LDF / MDF と同等の配置が可能に
- クラスター化列ストアインデックスの LOB 列 (nvarchar(max) / varchar(max) / varbinary(max)) への対応
- CTP 1.3 時点では、非クラスター化インデックスについては LOB 列はサポートしていない
- STRING_AGG 関数の追加
- STRING_AGG (TRANSACT-SQL)
https://msdn.microsoft.com/ja-jp/library/mt790580.aspx
- STRING_AGG (TRANSACT-SQL)
SELECT STRING_AGG(C1, ‘,’) FROM (VALUES(1,2),(2,1),(3,1),(4,4),(1,2)) AS T1(C1, C2)
- DATABASE SCOPED CREDENTIAL に対して、セキュリティ保護 (権限によるアクセスの制限) が可能
- sys.dm_os_host_info によるクロスプラットフォームの ホスト情報の取得の対応
- sys.dm_os_host_info (TRANSACT-SQL)
https://msdn.microsoft.com/ja-jp/library/mt790682.aspx
- sys.dm_os_host_info (TRANSACT-SQL)
- R サービスのパッケージ管理方法の強化
- SQL Server R Services の R パッケージ管理
https://msdn.microsoft.com/ja-jp/library/mt790486.aspx
- SQL Server R Services の R パッケージ管理
- SQL Server のマルチプラットフォーム対応
- SQL Server on Linux
- Ubuntu 16.04 をサポート
- SQL Server on Linux Documentation
https://docs.microsoft.com/en-us/sql/linux/
- Docker
- Docker Engine 1.8 以降をサポート
- microsoft/mssql-server-linux
https://hub.docker.com/r/microsoft/mssql-server-linux/ - microsoft/mssql-server-windows
https://hub.docker.com/r/microsoft/mssql-server-windows/ - microsoft/mssql-server-windows-express
https://hub.docker.com/r/microsoft/mssql-server-windows-express/ - Official Microsoft repository for SQL Server in Docker resources
https://github.com/Microsoft/mssql-docker
- SQL Server on Linux
- Announcing SQL Server on Linux public preview, first preview of next release of SQL Server
https://blogs.technet.microsoft.com/dataplatforminsider/2016/11/16/announcing-sql-server-on-linux-public-preview-first-preview-of-next-release-of-sql-server/
CTP 1.1
- メモリ最適化テーブルとネイティブコンパイル関数の機能強化
- 計算列 / 計算列に対してのインデックス作成のサポート
- ネイティブコンパイルモジュールでの JSON 関数の完全サポートと、チェック制約のサポート
- 文字列関数の追加
- CONCAT_WS (Transact-SQL)
https://msdn.microsoft.com/en-us/library/mt775030.aspx
- CONCAT_WS (Transact-SQL)
SELECT CONCAT(N’財閥’, N’えろす’, N’総帥’)
SELECT CONCAT_WS(N’財閥’, N’えろす’, N’総帥’)
- TRANSLATE (Transact-SQL)
https://msdn.microsoft.com/en-us/library/mt775084.aspx
SELECT TRANSLATE(‘ABC!EFG0’, ‘A!0’, ‘Z\9’)
- TRIM (Transact-SQL)
https://msdn.microsoft.com/en-us/library/mt775029.aspx
SELECT TRIM(‘ AAAAA ‘), TRIM(‘#’ FROM ‘##AAAAA##’)
- STRING_AGG 関数の WITHIN GROUP 句のサポート
- STRING_AGG (TRANSACT-SQL)
https://msdn.microsoft.com/ja-jp/library/mt790580.aspx
- STRING_AGG (TRANSACT-SQL)
SELECT STRING_AGG(C1, ‘,’) WITHIN GROUP (ORDER BY C2) FROM (VALUES(1,2),(2,1),(3,1),(4,4),(1,2)) AS T1(C1, C2)
- 新しい日本語照合順序のサポート
- 140 / VSS の追加
- 照合順序と Unicode のサポート
https://msdn.microsoft.com/ja-jp/library/ms143726.aspx
- 照合順序と Unicode のサポート
- 140 / VSS の追加
- BULK INSERT / OPENROWSET の Azure BLOB ストレージのサポート
- 準備
- データベーススコープの SAS の資格情報を作成する
- 準備
CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘P@ssw0rd’
CREATE DATABASE SCOPED CREDENTIAL MyAzureBlobStorageCredential
WITH IDENTITY = ‘SHARED ACCESS SIGNATURE’,
SECRET = ‘sv=xxxxxxxxx’
- Azure Storage の外部ストレージの外部データソースを作成する
CREATE EXTERNAL DATA SOURCE MyAzureBlobStorage
WITH (
TYPE = BLOB_STORAGE,
LOCATION = ‘https://kinmugi.blob.core.windows.net‘,
CREDENTIAL= MyAzureBlobStorageCredential)
- CREATE CREDENTIAL (Transact-SQL)
https://msdn.microsoft.com/ja-jp/library/ms189522.aspx - CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)
https://msdn.microsoft.com/en-us/library/mt270260.aspx - CREATE EXTERNAL DATA SOURCE (Transact-SQL)
https://msdn.microsoft.com/en-us/library/dn935022.aspx
- アクセス方法
- BULK INSERT (Transact-SQL)
https://msdn.microsoft.com/en-us/library/ms188365.aspx
- BULK INSERT (Transact-SQL)
BULK INSERT T1
FROM ‘file/ImportData.txt’
WITH (
DATA_SOURCE = ‘MyAzureBlobStorage’,
FIELDTERMINATOR = ‘,’
)
- OPENROWSET (Transact-SQL)
https://msdn.microsoft.com/en-us/library/ms190312.aspx
SELECT *
FROM OPENROWSET(
BULK ‘file/ImportData.txt’,
DATA_SOURCE = ‘MyAzureBlobStorage’,
SINGLE_CLOB
) AS T1
SELECT *
FROM OPENROWSET(
BULK ‘file/ImportData.txt’,
DATA_SOURCE = ‘MyAzureBlobStorage’,
FORMATFILE=’file/ImportData.fmt’,
FORMATFILE_DATA_SOURCE = ‘MyAzureBlobStorage’
) AS T1
14.0
4
1 SQLCHAR 0 4 "," 1 C1 ""
2 SQLCHAR 0 4 "," 2 C2 ""
3 SQLCHAR 0 4 "," 3 C3 ""
4 SQLCHAR 0 4 "\r\n" 4 C4 ""
- Examples of Bulk Access to Data in Azure Blob Storage
https://docs.microsoft.com/en-us/sql/relational-databases/import-export/examples-of-bulk-access-to-data-in-azure-blob-storage
- SQL Server on Linux の Red Hat Enterprise Linux 7.3 と Ubuntu 16.10 のサポートを追加
- SQL Server next version Community Technology Preview 1.1 now available
https://blogs.technet.microsoft.com/dataplatforminsider/2016/12/16/sql-server-next-version-community-technology-preview-1-1-now-available/
- SQL Server next version Community Technology Preview 1.1 now available
CTP 1.2
- SQL Server 2016 以降を解析対象とした、Database Tuning Advisor (DTA) の機能向上 (SSMS 16.4 の機能向上)
- Performance Improvements using Database Engine Tuning Advisor (DTA) recommendations
https://msdn.microsoft.com/en-us/library/mt805801.aspx - 列ストアインデックスの推奨情報のアドバイス (-fc オプションの追加)
- Columnstore index recommendations in Database Engine Tuning Advisor (DTA)
https://msdn.microsoft.com/en-us/library/mt805316.aspx
- Columnstore index recommendations in Database Engine Tuning Advisor (DTA)
- クエリストアをワークロードとして利用した解析の実施 (-iq オプションの追加)
- Tuning Database Using Workload from Query Store.
https://msdn.microsoft.com/en-us/library/mt805317.aspx
- Tuning Database Using Workload from Query Store.
- Performance Improvements using Database Engine Tuning Advisor (DTA) recommendations
- SQL Server on Linux の SUSE Linux Enterprise Linux v12 SP2 のサポートを追加
- SQL Server next version CTP 1.2 now available
https://blogs.technet.microsoft.com/dataplatforminsider/2017/01/20/sql-server-next-version-ctp-1-2-now-available/
CTP 1.3
- SQL Server on Linux の可用性グループのサポート
- SQL Server on Linux: Mission-critical HADR with Always On Availability Groups
https://blogs.technet.microsoft.com/dataplatforminsider/2017/02/17/sql-server-on-linux-mission-critical-hadr-with-always-on-availability-groups/ - CREATE AVAILABILITY GROUP (Transact-SQL)
https://msdn.microsoft.com/ja-jp/library/ff878399.aspx
CLUSTER_TYPE = { WSFC | NONE | EXTERNAL}- CTP 2.0 で EXTERNAL が追加され、Pacemaker を使用した可用性グループは EXTERNAL で作成する
- EXTERNAL の場合は、WSFC 以外のテクノロジーに、フェールオーバーの制御を任せる動作となる
- CTP 2.0 で EXTERNAL が追加され、Pacemaker を使用した可用性グループは EXTERNAL で作成する
- SQL Server on Linux の場合、WSFC のクラスターリソースの代わりに、Pacemaker + corosync を使用して、ノード切り替えの制御を実施
- Availability groups for SQL Server on Linux
https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-availability-group-overview - SQL Server 2017: HA and DR on Linux
https://www.youtube.com/watch?v=DEUeAgLCAng
- SQL Server on Linux: Mission-critical HADR with Always On Availability Groups
- 非クラスター化列ストアインデックスのオンライン作成 / 再構築のサポート
- CTP 1.3 の時点では、クラスター化列ストアインデックスのオンライン操作はサポートされていない (今後対応するかも不明)
- クラスター化列ストアインデックスのオンライン再構築は「REORGANIZE」(再構成) で対応
- CTP 1.3 の時点では、クラスター化列ストアインデックスのオンライン操作はサポートされていない (今後対応するかも不明)
- クラスターレスの可用性グループのサポート
- CTP 1.3 では、クラスターの可用性グループリソースを作成しない構成のため、可用性グループリスナーを使用した透過的な接続や、自動フェールオーバーに対応していない
- Windows / Linux で、データ同期として、同一のソリューションを使用することができる
- CTP 2.0 で可用性グループリスナーをサポート、自動フェールオーバーについてはクラスターレスはサポートしていない
- クラスターの構築が不要なため、単一の可用性グループで設置場所に依存しない可用性グループをシンプルに作成することができる
- ワークグループクラスターより敷居を低くして、可用性グループを利用することができる
- Read Scale With Availability Group
- HA は不要だが、読み取りスケールが可能な環境が必要な場合の構成として利用することができる
- セカンダリをバックアップ環境として利用
- 複製を行うための方法として利用することもできる
- Configure read-scale availability group for SQL Server on Linux
https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-availability-group-configure-rs - SQL Server 2017 Scale Out
SQL Server 2017 Scale Out
- CTP 1.3 では、クラスターの可用性グループリソースを作成しない構成のため、可用性グループリスナーを使用した透過的な接続や、自動フェールオーバーに対応していない
- 同期コミットモードを使用している場合の「REQUIRED_COPIES_TO_COMMIT 」によるコミットに必要となる可用性レプリカの制御
- Balancing high availability and data protection
https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-availability-group-cluster-ubuntu#balancing-high-availability-and-data-protection
- Balancing high availability and data protection
- クロスプラットフォームの OS 間 (Windows / Linux) の可用性グループのサポート
- 分散可用性グループでクロスプラットフォーム間の可用性グループを接続してデータの同期を実施
- 一応クラスターレスもクロスプラットフォームは設定できる
- SQL Server on Linux でのフルテキスト検索のサポート
- セマンティック検索もサポートされているが、セマンティック言語統計データベースについては、Winodws 版でインストールしたものを持ってくる必要がある
- Install SQL Server Full-Text Search on Linux
https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-full-text-search
- Install SQL Server Full-Text Search on Linux
- セマンティック検索もサポートされているが、セマンティック言語統計データベースについては、Winodws 版でインストールしたものを持ってくる必要がある
- テンポラルテーブルの保持期間ポリシーのサポート
- sys.tables (Transact-SQL)
https://msdn.microsoft.com/ja-jp/library/ms187406.aspx
SQL Database v12 向けに保持期間ポリシー用に列が追加されていた - ALTER TABLE (Transact-SQL)
https://msdn.microsoft.com/en-us/library/ms190273.aspx
HISTORY_RETENTION_PERIOD の設定が、Box の SQL Server でもサポートされた?? - Temporal Tables are generally available in Azure SQL Database
https://azure.microsoft.com/ja-jp/blog/general-availability-temporal-tables-in-azure-sql-database/
- sys.tables (Transact-SQL)
- 間接チェックポイントの性能改善
- 可用性グループでコミット時に必要な最小のレプリカ数を設定可能
- CREATE AVAILABILITY GROUP (Transact-SQL)
https://msdn.microsoft.com/ja-jp/library/ff878399.aspx
REQUIRED_COPIES_TO_COMMIT = { integer } - ALTER AVAILABILITY GROUP (Transact-SQL)
https://msdn.microsoft.com/ja-jp/library/ff878601.aspx
- CREATE AVAILABILITY GROUP (Transact-SQL)
- Linux のプロセス情報を取得するための DMV の追加
- Linux Process Dynamic Management Views (Transact-SQL)
https://msdn.microsoft.com/en-us/library/mt778983.aspx
- Linux Process Dynamic Management Views (Transact-SQL)
- 統計情報のヒストグラム取得用 DMV の追加
- sys.dm_db_stats_histogram (Transact-SQL)
https://msdn.microsoft.com/en-us/library/mt794645.aspx
- sys.dm_db_stats_histogram (Transact-SQL)
- SQL Server next version CTP 1.3 now available
https://blogs.technet.microsoft.com/dataplatforminsider/2017/02/17/sql-server-next-ve
rsion-ctp-1-3-now-available/
CTP 1.4
- SQL Server on Linux での SQL Server Agent のサポート
- Install SQL Server Agent on Linux
https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-sql-agent - Create and run SQL Server Agent jobs on Linux
https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-run-sql-server-agent-job - CTP 1.4 時点では、以下の機能はサポートされていない。
- Subsystems: CmdExec, PowerShell, Replication Distributor, Snapshot, Merge, Queue Reader, SSIS, SSAS, SSRS
- Alerts
- DB Mail
- Log Shipping
- Log Reader Agent
- Change Data Capture
- Install SQL Server Agent on Linux
- SQL Server on Linux: Running jobs with SQL Server Agent
https://blogs.technet.microsoft.com/dataplatforminsider/2017/03/17/sql-server-on-linux-running-jobs-with-sql-server-agent/ - SQL Server next version CTP 1.4 now available
https://blogs.technet.microsoft.com/dataplatforminsider/2017/03/17/sql-server-next-version-ctp-1-4-now-available/
CTP 2.0
- SQL Server on Linux の対応状況
- SQL Server on Linux でサポートされる予定の機能)
- メジャーなプログラム言語のドライバの互換性
- In-Memory OLTP / 列ストア
- データ圧縮
- Always Encrypted / Row Level Security / 動的データマスク
- AD ユーザー認証 (計画段階)
- Service Broker
- 変更データキャプチャ
- パーティショニング
- 監査
- CLR
- JSON / XML
- サードパーティーツール
- SQL Server 2017 on Linux で現時点で利用できない機能
- データベースエンジン機能
- DB Mail
- 警告
- ファイルテーブル
- ストレッチデータベース
- Polybase
- サードパーティーの拡張
- 拡張ストアドプロシージャー (XPs)
- データベースミラーリング
- VSS スナップショット
- その他のサービス
- Analysis Services
- Reporting Services
- Integration Services
- R Services
- Master Data Services
- Data Quality Services
- データベースエンジン機能
- 新しいクロスプラットフォームの GUI データベース管理ツール (計画段階)
- SQL Server 2017: What’s New in the Database Engine?
https://youtu.be/H3zIF1FAEw4?t=78
- SQL Server on Linux でサポートされる予定の機能)
- 再開可能なオンラインインデックスリビルド
- ALTER INDEX に RESUMABLE = { ON | OFF} オプションが追加されており、ONLINE =ON の場合に、再開可能なインデックスリビルドを実行できる
ALTER INDEX [PK_LINEITEM] ON [dbo].[LINEITEM] REBUILD PARTITION = ALL WITH (RESUMABLE = ON, ONLINE = ON, MAX_DURATION = 10)
ALTER INDEX [PK_LINEITEM] ON [dbo].[LINEITEM] PAUSE — 停止
ALTER INDEX [PK_LINEITEM] ON [dbo].[LINEITEM] ABORT — キャンセル
ALTER INDEX [PK_LINEITEM] ON [dbo].[LINEITEM] RESUME WITH (MAXDOP=0, MAX_DURATION=1) — 再開
- sys.index_resumable_operations というシステムカタログビューが追加されており、インデックスの再構築状況を確認することが可能
- 再構築を停止している場合、インデックスに対しての変更は、現状のインデックスと再構築により、再作成しているインデックスの 2 箇所に対して実施される
- ドキュメント上は読み取り主体のワークロードでは影響はないが、更新系のワークロードでは、 10% 未満の性能劣化が発生
- ベーステーブルに LOB が含まれている場合、再開可能なオンラインインデックス再構築は Sch-M のロックを取得する
- Sch-M 同士のロック取得はロック競合が発生する
- Online Index Operations
https://docs.microsoft.com/ja-jp/sql/t-sql/statements/alter-index-transact-sql#online-index-operations - Resumable Index Rebuild Considerations
https://docs.microsoft.com/ja-jp/sql/relational-databases/indexes/guidelines-for-online-index-operations#resumable-index-rebuild-considerations - Resumable Online Index Rebuild is in public preview for SQL Server 2017 CTP 2.0
https://blogs.technet.microsoft.com/dataplatforminsider/2017/04/20/resumable-online-index-rebuild-is-in-public-preview-for-sql-server-2017-ctp-2-0/
- データベーススコープの構成で IDENTITY_CACHE の設定を変更可能 (デフォルトは有効)
- IDENTITY のキャッシュを無効にすることができる
- SQL Server 2012 以降は、IDENTITY はキャッシュしたものから割り当てられており、SQL Server が異常終了すると、キャッシュが破棄され連番がスキップされていた
- トレースフラグ 272 でインスタンスレベルで変更できていたものが DB レベルで変更可能に
- ALTER DATABASE SCOPED CONFIGURATION (Transact-SQL)
https://docs.microsoft.com/ja-jp/sql/t-sql/statements/alter-database-scoped-configuration-transact-sql
- IDENTITY のキャッシュを無効にすることができる
- CLR の厳格なセキュリティ
- SQL Server 2016 までと CLR のセキュリティのデフォルトの制限が変更されており、サーバーオプションを変更することで下位互換のモードにすることが可能
- 従来の SAFE / EXTERNAL ACCESS は UNSAFE での動作となる
- 署名されていないアセンブリが読み取られなくなる
- CLR strict security
https://docs.microsoft.com/ja-jp/sql/database-engine/configure-windows/clr-strict-security
- SQL Server 2016 までと CLR のセキュリティのデフォルトの制限が変更されており、サーバーオプションを変更することで下位互換のモードにすることが可能
- Adaptive Query Processing
- 互換性レベル 140 を使用することで、3 種類の適合クエリ処理をサポート
- Interleaved execution
- Materialize estimates for multi-statement table valued function (MSTVFs)
- Downstream operations will benefit from the corrected MSTVF cardinality estimate
- Introducing Interleaved Execution for Multi-Statement Table Valued Functions
https://blogs.msdn.microsoft.com/sqlserverstorageengine/2017/04/19/introducing-interleaved-execution-for-multi-statement-table-valued-functions/
- Batch-mode memory grant feedback
- Adjust memory grants based on execution feedback
- Remove spills and improve concurrentcy for repating queries
- Introducing Batch Mode Adaptive Memory Grant Feedback
https://blogs.msdn.microsoft.com/sqlserverstorageengine/2016/11/29/introducing-batch-mode-adaptive-memory-grant-feedback/
- Batch mode adaptive joins
- Defer the choice of hash join or nested loop until after the first join input has been scanned
- Uses nested loop for small inputs, hash joins for large inputs
- Introducing Batch Mode Adaptive Joins
https://blogs.msdn.microsoft.com/sqlserverstorageengine/2017/04/19/introducing-batch-mode-adaptive-joins/ - SSMS 17.0 RC3 では Adaptive joins のイテレーターのグラフィカルな表示をサポートしておらず、次の SSMS の更新で対応予定
- Adaptive Join に対応していない SSMS では、グラフィカルな実行プランではエラーとなるため、確認する場合、テキストベースの実行プランを取得する
- SQL Server 2017: Adaptive Query Processing
- グラフデータ
- グラフデータベース互換の多対多のリレーションシップをサポート
- 不正アクセス / ソーシャルグラフ等のデータを表現するためのデータストアとして利用することが可能
- データのリレーションシップを自分で定義することができる
- データの相互関係性を分析
- データ間の接続が明確でないものを明らかにすることができる
- 既存の事実から新しい情報を具体化 / 洞察する
- ノード (頂点) とエッジ (関係) を使用してデータを表現
- SQL Server (SQL エンジン) に統合されており、クエリで操作をすることが可能であり、列ストア / R / Machile Learning 等の機能とも連携できる
- SQL を使用して、既存のテーブルとグラフデータベースのテーブルの両方を検索することが可能
- テーブルのため、セキュリティとコンプライアンスには、SQL Server の機能を利用することができる
- MATCH 句によってノードのつながりを条件として指定する
- MATCH 句内のグラフの条件は、 AND でつなぐことができる
- Graph processing with SQL Server 2017
https://docs.microsoft.com/en-us/sql/relational-databases/graphs/sql-graph-overview - CREATE TABLE (SQL Graph)
https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-sql-graph - MATCH (Transact-SQL)
https://docs.microsoft.com/en-us/sql/t-sql/statements/match-sql-graph - SQL Server 2017: Building applications using graph data
https://www.youtube.com/watch?v=s986hslpFtQ
- グラフデータベース互換の多対多のリレーションシップをサポート
- 自動チューニング
- クエリのパフォーマンス問題が発生した場合、クエリストアから過去に実行された実行効率の良いクエリを取得し、そのプランを使用するように実行プランを強制することで、パフォーマンスの改善を行う
- 最後の良い実行プランに強制を行う
- クエリのパフォーマンス問題が発生した場合、クエリストアから過去に実行された実行効率の良いクエリを取得し、そのプランを使用するように実行プランを強制することで、パフォーマンスの改善を行う
ALTER DATABASE current SET AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = ON );
- Available only in Enterprise Edition of SQL Server.
- Express Edition で有効にしようとした場合、エンタープライズのみのメッセージが表示されたので、Enterprise Edition 限定の機能となりそうである
- Automatic tuning
https://docs.microsoft.com/en-us/sql/relational-databases/automatic-tuning/automatic-tuning
- メモリ最適化テーブルの非クラスター化インデックスのパフォーマンスの改善
- データリカバリ中の非クラスター化インデックスの構築のパフォーマンスが大幅に最適化されたことによる、データベースの回復時間が大幅に短縮される。
- サービス起動時の DB へのアクセスが可能となる復旧時間の短縮につながる
- データリカバリ中の非クラスター化インデックスの構築のパフォーマンスが大幅に最適化されたことによる、データベースの回復時間が大幅に短縮される。
- 可用性グループ利用時の同一インスタンス内のデータベースに対しての分散トランザクションのサポート
- AlwaysOn 可用性グループでのサポートであり、データベースミラーリングに対しては SQL Server 2017 を使用してもサポートはされない
- 今後のプレビューで、トランザクションの結果を選択できるようにするオプションが追加される予定
- トランザクションの中止以外の操作が選択できる?
- Transactions – Always On availability groups and Database Mirroring
https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/transactions-always-on-availability-and-database-mirroring
参考資料
- What’s New in SQL Server vNext (Database Engine)
https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/what-s-new-in-sql-server-vnext-database-engine - SQL Server 2017: What’s New in the Database Engine?
https://www.youtube.com/watch?v=H3zIF1FAEw4 - SQL Server next version CTP 1.3 now available
https://blogs.technet.microsoft.com/dataplatforminsider/2017/02/17/sql-server-next-version-ctp-1-3-now-available/ - SQL Server 2017 Community Technology Preview 2.0 now available
https://blogs.technet.microsoft.com/dataplatforminsider/2017/04/19/sql-server-2017-community-technology-preview-2-0-now-available/
SSRS
Technical Preview
(次期機能ではあるが、現状は、SQL Server v.Next ではなく、2016 の機能追加の TP として追加されている)
- Power BI レポートのサポート
現状の制限として、Power BI レポートは、SSAS (表形式 / 多次元) に対してのみ接続可能 (他のデータソースに対しての接続も今後追加予定)
- 検証自体は SQL Server 2016 でも実施することができるが、SQL Server 2016 ではなく、SQL Server v.Next の機能として提供が行われる予定
- 現状は、カスタムビジュアルを使用することはできない
Report Builder / SSDT でクエリデザイナーが DAX をサポート
- SQL Server 2016 以降で SSAS で表形式モードを使用している場合、最新の Report Builder / SSDT でクエリデザイナーをサポート
- Query designer support for DAX now available in Report Builder and SQL Server Data Tools
https://blogs.msdn.microsoft.com/sqlrsteamblog/2017/03/09/query-designer-support-for-dax-now-available-in-report-builder-and-sql-server-data-tools/
参考資料
- What’s new in SQL Server Reporting Services (SSRS)
https://docs.microsoft.com/en-us/sql/reporting-services/what-s-new-in-sql-server-reporting-services-ssrs - Power BI reports in SQL Server Reporting Services: January 2017 Technical Preview now available
https://blogs.msdn.microsoft.com/sqlrsteamblog/2017/01/17/power-bi-reports-in-sql-server-reporting-services-january-2017-technical-preview-now-available/ - Power BI reports in SQL Server Reporting Services – Technical Preview
https://www.microsoft.com/en-us/download/details.aspx?id=54610
SSIS
CTP 1.0
- Scale-Out Feature
- SSISDB から複数のパッケージを実行する際に、パッケージを実行するサーバーを分散させることができる
- SSIS Scale Out is available in SQL Server vNext CTP1
https://blogs.msdn.microsoft.com/ssis/2017/01/20/ssis-scale-out-is-available-in-sql-server-vnext-ctp1/ - Integration Services (SSIS) Scale Out
https://msdn.microsoft.com/ja-jp/library/mt791346.aspx - Integration Services (SSIS) Scale Out でパッケージを実行する
https://msdn.microsoft.com/ja-jp/library/mt791343.aspx - チュートリアル: Integration Services Scale Out をセットアップする
https://msdn.microsoft.com/ja-jp/library/mt791349.aspx
- ODATA 対応
- OData にアクセスできるようになったことで、Dynamics AX Online / Dynamics CRM Online の OData Feed にアクセスできるようになった。
参考資料
- What’s New in Integration Services in SQL Server vNext
https://docs.microsoft.com/en-us/sql/integration-services/what-s-new-in-integration-services-in-sql-server-vnext - Deep Dive of SSIS 2016 + vNext
https://channel9.msdn.com/Events/Ignite/Australia-2017/DA336b - Download SQL Server Data Tools (SSDT)
https://docs.microsoft.com/en-us/sql/ssdt/download-sql-server-data-tools-ssdt
SSAS
CTP 1.1
- 表形式モデルの互換性レベル「1400」の追加
- Evaluating Shared Expressions in Tabular 1400 Models
https://blogs.msdn.microsoft.com/analysisservices/2016/12/30/evaluating-shared-expressions-in-tabular-1400-models/ - 表軽視モデルの互換性レベル「1400」を利用し、SSDT v.Next CTP で データ取得をする際に、Power BI Desktop / Excel 2016 と同等のデータ取得のユーザーエクスペリエンスを利用することができる。
- Introducing a Modern Get Data Experience for SQL Server vNext on Windows CTP 1.1 for Analysis Services
https://blogs.msdn.microsoft.com/analysisservices/2016/12/16/introducing-a-modern-get-data-experience-for-sql-server-vnext-on-windows-ctp-1-1-for-analysis-services/ - Released: SQL Server Data Tools 17.0 RC 2
https://blogs.msdn.microsoft.com/analysisservices/2017/02/03/released-sql-server-data-tools-17-0-rc-2/
- Evaluating Shared Expressions in Tabular 1400 Models
- 不規則な階層の表現
- メジャー値にカスタム行を設定することによる詳細行の取得
- 詳細行へのドリルスルー
- DAX の機能強化
- テーブルレベルのセキュリティ
- データへのアクセスだけでなく、テーブルが存在するということを秘匿することが可能 (テーブル名に対してのセキュリティ)
CTP 1.3
- 表形式モデルのデータリフレッシュ処理を最適化するためのエンコードヒントの追加
- エンコード = 内部的なデータの変換処理
- "Default" "Value" "Hash" の 3 種類を使用することができる
(今までは、SSAS が自動的に Value / Hash を判断していたものをヒントで明示的に指定できるようになった) - Encoding Hints and SQL Server Analysis Services vNext CTP 1.3
https://blogs.msdn.microsoft.com/analysisservices/2017/02/17/encoding-hints-and-sql-server-analysis-services-vnext-ctp-1-3/
CTP 2.0
- 表形式モデルのメタデータをオブジェクトレベルで保護
- 表形式モデルを使用した場合、Power BI フィールドリストから階層と列を再利用することが可能
- Power BI で一貫したモデルのエクスペリエンスを実現する
- 現状は JSON を使用した TMSL を操作することで実現している
- Power BI で一貫したモデルのエクスペリエンスを実現する
- 日付フィールドを使用して、日付の階層を簡単に作成することが可能
- デフォルトのインストールオプションが「表形式モード」に変更
- SSDT 17.0 GA で表形式モデルの互換性レベル 1400 でダイレクトクエリ データソースの M クエリのサポート
- Introducing DirectQuery Support for Tabular 1400
https://blogs.msdn.microsoft.com/analysisservices/2017/04/19/introducing-directquery-support-for-tabular-1400/
- Introducing DirectQuery Support for Tabular 1400
- SSDT の DAX エディタのサポート
- Introducing a DAX Editor Tool Window for SSDT Tabular
https://blogs.msdn.microsoft.com/analysisservices/2017/04/19/introducing-a-dax-editor-tool-window-for-ssdt-tabular/
- Introducing a DAX Editor Tool Window for SSDT Tabular
- Power Query Like なデータソースの操作
- New Get Data Capabilities in the GA Release of SSDT Tabular 17.0 (April 2017)
https://blogs.msdn.microsoft.com/analysisservices/2017/04/19/new-get-data-capabilities-in-the-ga-release-of-ssdt-tabular-17-0-april-2017/
- New Get Data Capabilities in the GA Release of SSDT Tabular 17.0 (April 2017)
- 各種改善
- 1200 / 1400 モデルのダイナミック管理ビューの改善
- 互換性レベル 1100 / 1103 の表形式モデルで使用できていた DISCOVER_CALC_DEPENDENCY DMV が利用可能になる
- SSDT 17.0 GA を使用することで、詳細行のインテリセンスと強調表示の選択のエクスぺりセンスの改善
- 構造化されたデータソースの表示 / 編集 / スクリプティングのサポートについての SSMS の改善
- より高い開発体験のためのトランザクションパフォーマンスの改善
- 1200 / 1400 モデルのダイナミック管理ビューの改善
参考資料
- What’s new in SQL Server Analysis Services 2017
https://docs.microsoft.com/en-us/sql/analysis-services/what-s-new-in-sql-server-analysis-services-vnext - What’s new for SQL Server vNext on Windows CTP 1.1 for Analysis Services
https://blogs.msdn.microsoft.com/analysisservices/2016/12/16/whats-new-for-sql-server-vnext-on-windows-ctp-1-1-for-analysis-services/
- What’s new in SQL Server 2017 CTP 2.0 for Analysis Services
https://blogs.msdn.microsoft.com/analysisservices/2017/04/19/whats-new-in-sql-server-2017-ctp-2-0-for-analysis-services/ - SQL Server 2017: BI enhancements
https://www.youtube.com/watch?v=vNtpW7aaM-s
SQL Server Machine Learning Services
CTP 2.0
- SQL Server R サービスの新しい名称
- SQL Server Machine Learning サービス (データベース内) で R 言語と Python を利用することができる
- 現状は Python 3.5 + Anaconda 4.3 ブランチに基づいた Anaconda 3 インストーラー
- CNTK や Tensorflow を使用でき、Python スクリプトの中から、GPU を利用することも可能
- インストール方法
- Set up Python Machine Learning Services (In-Database)
https://docs.microsoft.com/en-us/sql/advanced-analytics/python/setup-python-machine-learning-services
- Set up Python Machine Learning Services (In-Database)
- 現状サポートされているパッケージリストは Anaconda package list を参照
- 初期の状態では tensorflow は入っていない
- c:\program files\microsoft sql server\mssql14.mssqlserver\python_services\lib\site-packages
- 以下で追加することは可能
- cd C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES\Scripts
- 初期の状態では tensorflow は入っていない
- インストール方法
pip install tensorflow
exec sp_execute_external_script
@language =N’Python’,
@script=N’
import os
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "3"
import tensorflow as tf
hello = tf.constant("Hello, TensorFlow!")
sess = tf.Session()
print(sess.run(hello))
‘
- Python Interoperability
https://docs.microsoft.com/en-us/sql/advanced-analytics/python/python-interoperability - https://youtu.be/FcoY795jTcc?t=1138
- https://youtu.be/XFzrRyca_HU?t=1150
- CNTK についても今後のサポート予定
- SQL Server を使用しない、SQL Server Machine Larning サービス (スタンドアロン) としてもインストールすることができる
- In-Database であれば、Express でも使用できるが、スタンドアロンは Express では使用できなかった。
- データベース内 / スタンドアロンともに最新の Microsfot R の最新バージョン (9.1.0) が含まれている
参考資料
- What’s New in Machine Learning with SQL Server
https://docs.microsoft.com/en-us/sql/advanced-analytics/what-s-new-in-sql-server-machine-learning-services - Overview of Microsoft Machine Language R package
https://www.youtube.com/watch?v=ikJ0OzzsiUM - What’s new in R Server 9.1 and SQL R Services
https://www.youtube.com/watch?v=q4hRaKuHJjQ - SQL Server 2017: Advanced Analytics with Python
https://www.youtube.com/watch?v=FcoY795jTcc
その他の参考資料
- Microsoft released SQL Server vNext (2018) ? New features and enhancements in CTP 1.x
https://sqlwithmanoj.com/2016/11/20/microsoft-released-sql-server-vnext-2018-new-features-and-enhancements-in-ctp-1-0/ - SUSE Webinar – Introduction to SQL Server on Linux
http://www.slideshare.net/TravisWright4/suse-webinar-introduction-to-sql-server-on-linux?qid=44c2153e-1e70-4233-a326-56cf722e3673&v=&b=&from_search=1 - Nordic infrastructure Conference 2017 – SQL Server on Linux Overview
http://www.slideshare.net/TravisWright4/nordic-infrastructure-conference-2017-sql-server-on-linux-overview - BRK3288: SQL Server v.Next with Support on Linux, Windows and Containers
https://techcommunity.microsoft.com/t5/Tech-Summit-All-Sessions/BRK3288-SQL-Server-v-Next-with-Support-on-Linux-Windows-and/td-p/39739