8
SQL Server 2017 の新機能 https://docs.microsoft.com/ja-jp/sql/sql-server/what-s-new-in-sql-server-2017 SQL Server 2017 の各エディションとサポートされている機能 https://docs.microsoft.com/ja-jp/sql/sql-server/editions-and-components-of-sql-server-2017 SQL Server on Linux https://docs.microsoft.com/ja-jp/sql/linux/sql-server-linux-overview SQL Server 2017 リリース ノート https://docs.microsoft.com/ja-jp/sql/sql-server/sql-server-2017-release-notes SQL Server 2017: What's New in the Database Engine? https://youtu.be/H3zIF1FAEw4?t=78 基本情報 ファイルサイズが 1GB を超え、瞬時初期化が設定されていない場合に警告が発生 1 ファイルあたり 256 GB の初期サイズを警告は発生するが設定することができる セットアップ時の tempdb のファイルサイズ上限の緩和 インストール ALTER DATABASE (Transact-SQL) Compatibility Level https://msdn.microsoft.com/en-us/library/bb510680.aspx 互換性レベル 140 の追加 互換性レベル 照合順序と Unicode のサポート https://msdn.microsoft.com/ja-jp/library/ms143726.aspx 140 / VSS の追加 (異体字セレクターの対応) 新しい日本語照合順序のサポート 照合順序 間接チェックポイントの性能改善 sys.dm_db_incremental_stats_properties https://msdn.microsoft.com/ja-jp/library/mt761751.aspx SQL Server 2016 SP1 で追加された増分統計向けの DMV については以下の情報 増分統計の更新の閾値の計算方法の改善 (互換性レベル 140) 互換性レベル 140 を使用することで、3 種類の適合クエリ処理をサポート 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/ Interleaved execution 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 memory grant feedback 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/ Adaptive Join に対応していない SSMS では、グラフィカルな実行プランではエラーとなるため、確認する場合、テキストベースの実行プランを取得する SSMS 17.0 RC3 では Adaptive joins のイテレーターのグラフィカルな表示をサポートしておらず、次の SSMS の更新で対応予定 Batch mode adaptive joins SQL Server 2017: Adaptive Query Processing Adaptive Query Processing 最後の良い実行プランに強制を行う ALTER DATABASE current SET AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = ON ); クエリのパフォーマンス問題が発生した場合、クエリストアから過去に実行された実行効率の良いクエリを取得し、そのプランを使用するように実行プランを強制することで、パフォーマンスの改善を行う Enterprise Edition 出ない場合は、推奨情報が取得されていないように見える Express Edition で有効にしようとした場合、エンタープライズのみのメッセージが表示されたので、Enterprise Edition 限定の機能となる Available only in Enterprise Edition of SQL Server. 自動チューニング パフォーマンス データベースエンジン 2017年5月17日 18:03 SQL Server 2017 チートシート -1 ページ

SQL Server 2017 データベースエンジン 新機能 (RC2 版)

Embed Size (px)

Citation preview

Page 1: SQL Server 2017 データベースエンジン 新機能 (RC2 版)

SQL Server 2017 の新機能

https://docs.microsoft.com/ja-jp/sql/sql-server/what-s-new-in-sql-server-2017

SQL Server 2017 の各エディションとサポートされている機能

https://docs.microsoft.com/ja-jp/sql/sql-server/editions-and-components-of-sql-server-2017

SQL Server on Linux

https://docs.microsoft.com/ja-jp/sql/linux/sql-server-linux-overview

SQL Server 2017 リリース ノート

https://docs.microsoft.com/ja-jp/sql/sql-server/sql-server-2017-release-notes

SQL Server 2017: What's New in the Database Engine?

https://youtu.be/H3zIF1FAEw4?t=78

基本情報

ファイルサイズが 1GB を超え、瞬時初期化が設定されていない場合に警告が発生▪

1 ファイルあたり 256 GB の初期サイズを警告は発生するが設定することができる○

セットアップ時の tempdb のファイルサイズ上限の緩和•

インストール

ALTER DATABASE (Transact-SQL) Compatibility Level

https://msdn.microsoft.com/en-us/library/bb510680.aspx

互換性レベル 140 の追加•

互換性レベル

照合順序と Unicode のサポート

https://msdn.microsoft.com/ja-jp/library/ms143726.aspx

140 / VSS の追加 (異体字セレクターの対応)○

新しい日本語照合順序のサポート•

照合順序

間接チェックポイントの性能改善•

sys.dm_db_incremental_stats_properties

https://msdn.microsoft.com/ja-jp/library/mt761751.aspx

SQL Server 2016 SP1 で追加された増分統計向けの DMV については以下の情報▪

増分統計の更新の閾値の計算方法の改善 (互換性レベル 140)•

互換性レベル 140 を使用することで、3 種類の適合クエリ処理をサポート○

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/

Interleaved execution○

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 memory grant feedback○

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/

Adaptive Join に対応していない SSMS では、グラフィカルな実行プランではエラーとなるため、確認する場合、テキストベースの実行プランを取得する□

SSMS 17.0 RC3 では Adaptive joins のイテレーターのグラフィカルな表示をサポートしておらず、次の SSMS の更新で対応予定▪

Batch mode adaptive joins○

SQL Server 2017: Adaptive Query Processing○

Adaptive Query Processing•

最後の良い実行プランに強制を行う▪

ALTER DATABASE current SET AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = ON );

クエリのパフォーマンス問題が発生した場合、クエリストアから過去に実行された実行効率の良いクエリを取得し、そのプランを使用するように実行プランを強制することで、パフォーマンスの改善を行う○

Enterprise Edition 出ない場合は、推奨情報が取得されていないように見える□

Express Edition で有効にしようとした場合、エンタープライズのみのメッセージが表示されたので、Enterprise Edition 限定の機能となる▪

Available only in Enterprise Edition of SQL Server.○

Automatic tuning

自動チューニング•

パフォーマンス

データベースエンジン

2017年5月17日 18:03

SQL Server 2017 チートシート - 1 ページ

Page 2: SQL Server 2017 データベースエンジン 新機能 (RC2 版)

Automatic tuning

https://docs.microsoft.com/en-us/sql/relational-databases/automatic-tuning/automatic-tuning

How to find query plan choice regressions with SQL Server 2017 CTP2

https://blogs.msdn.microsoft.com/sqlserverstorageengine/2017/04/24/how-to-find-query-plan-choice-regressions-with-sql-server-2017-ctp2/

“You Shall Not Regress!!!” – How SQL Server 2017 prevents plan regressions?

https://blogs.msdn.microsoft.com/sqlserverstorageengine/2017/04/25/you-shall-not-regress-how-sql-server-2017-prevents-plan-regressions/

sys.dm_db_tuning_recommendations (Transact-SQL)

https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-db-tuning-recommendations-transact-sql

Demo: Identify and fix plan change regression in SQL Server 2017 RC1

https://blogs.msdn.microsoft.com/sqlserverstorageengine/2017/07/20/demo-identify-and-fix-plan-change-regression-in-sql-server-2017-rc1/

クローン作成時にランタイム統計をフラッシュすることで、最新の状態にしてクローニングを行う○

SQL 2016 SP1 CU2 でも対応されている○

DBCC CLONEDATABASE を実行した際の挙動の変更•

Community driven Enhancements in SQL Server 2017

https://blogs.msdn.microsoft.com/sql_server_team/sql-server-community-driven-enhancements-in-sql-server-2017/

中小規模のデータベースのバックアップのパフォーマンス向上•

sys.dm_exec_query_statistics_xml

https://msdn.microsoft.com/ja-jp/library/mt791503.aspx

SQL Server 2016 SP1 で追加されているものが SQL Server 2017 でも追加された○

sys.dm_exec_query_statistics_xml による、実行中のクエリの実行プランの取得•

sys.dm_os_host_info (TRANSACT-SQL)

https://msdn.microsoft.com/ja-jp/library/mt790682.aspx

sys.dm_os_host_info によるクロスプラットフォームの ホスト情報の取得の対応•

Linux Process Dynamic Management Views (Transact-SQL)

https://msdn.microsoft.com/en-us/library/mt778983.aspx

sys.dm_linux_proc_all_stat▪

sys.dm_linux_proc_cpuinfo▪

sys.dm_linux_proc_meminfo▪

sys.dm_linux_proc_sql_maps▪

sys.dm_linux_proc_sql_threads▪

RC2 時点ではなくなっていたので最終的に次の DMV は実装されないかも…。

Linux のプロセス情報を取得するための DMV の追加•

sys.dm_db_stats_histogram (Transact-SQL)

https://msdn.microsoft.com/en-us/library/mt794645.aspx

統計情報のヒストグラム取得用 DMV の追加•

これにより、完全バックアップ取得後に、DB のデータファイルに対してどの程度の変更が発生したかをトラッキングすることが可能○

DCM のトラッキングとして使用することができる▪

変更を確認することで、差分バックアップを取得する実行タイミングの調整などに利用することができる。○

sys.dm_db_file_space_usage (Transact-SQL)

https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-db-file-space-usage-transact-sql

sys.dm_db_file_space_usage に「modified_extent_page_count」列の追加•

バージョンストアの使用状況を DB 単位に確認することができる○

sys.dm_tran_version_store_space_usage (Transact-SQL)

https://docs.microsoft.com/ja-jp/sql/relational-databases/system-dynamic-management-views/sys-dm-tran-version-store-space-usage

sys.dm_tran_version_store_space_usage の追加•

DBCC LOGINFO の DMV 版○

仮想ログファイルの設定状況を確認することができる○

sys.dm_db_log_info (Transact-SQL)○

https://docs.microsoft.com/ja-jp/sql/relational-databases/system-dynamic-management-views/sys-dm-db-log-info-transact-sql

sys.dm_db_log_info の追加•

sys.dm_os_sys_info (Transact-SQL)

https://docs.microsoft.com/ja-jp/sql/relational-databases/system-dynamic-management-views/sys-dm-os-sys-info-transact-sql

sys.dm_os_sys_info に CPU ソケット / CPU ソケット当たりのコア数 / NUMA ノード数の情報を追加•

sys.dm_db_log_stats (Transact-SQL)

https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-db-log-stats-transact-sq

トランザクションログの使用状況を確認することができる DMF の追加

仮想ログファイルについても確認することができるが、詳細については sys.dm_db_log_info を使用する

トランザクションログのスマートバックアップをするための DMF として利用できる○

sys.dm_db_log_stats DMF の追加•

DMV / DMF

メモリ最適化テーブルで sp_spaceused をサポート○

ネイティブ モジュールで sp_rename をサポート○

ネイティブ モジュールで CASE ステートメントをサポート○

インメモリ テーブルで 8 個のインデックス制限がなくなった○

ネイティブ モジュールで TOP (N) WITH TIES をサポート○

一部のケースで、インメモリ テーブルに対する ALTER TABLE が速度向上

In-Memory OLTP のサポートの拡充•

In-Memory OLTP

SQL Server 2017 チートシート - 2 ページ

Page 3: SQL Server 2017 データベースエンジン 新機能 (RC2 版)

一部のケースで、インメモリ テーブルに対する ALTER TABLE が速度向上○

インメモリ テーブルのトランザクションのロールバックが並列で行われ、フェールオーバーや (一部のケースで) 再起動にかかる時間が大幅に短縮○

インメモリ チェックポイント ファイルを Azure Storage に保存可能となり、LDF / MDF と同等の配置が可能に○

計算列 / 計算列に対してのインデックス作成のサポート○

ネイティブコンパイルモジュールでの JSON 関数の完全サポートと、チェック制約のサポート○

メモリ最適化テーブルとネイティブコンパイル関数の機能強化•

サービス起動時の DB へのアクセスが可能となる復旧時間の短縮につながる▪

データリカバリ中の非クラスター化インデックスの構築のパフォーマンスが大幅に最適化されたことによる、データベースの回復時間が大幅に短縮される。○

メモリ最適化テーブルの非クラスター化インデックスのパフォーマンスの改善•

CREATE COLUMNSTORE INDEX (Transact-SQL)

https://docs.microsoft.com/en-us/sql/t-sql/statements/create-columnstore-index-transact-sql

非クラスター化インデックスについては LOB 列はサポートしていない○

クラスター化列ストアインデックスの LOB 列 (nvarchar(max) / varchar(max) / varbinary(max)) への対応•

CREATE COLUMNSTORE INDEX (Transact-SQL)

https://docs.microsoft.com/en-us/sql/t-sql/statements/create-columnstore-index-transact-sql

クラスター化列ストアインデックスのオンライン再構築は「REORGANIZE」(再構成) で対応▪

クラスター化列ストアインデックスのオンライン操作はサポートされていない○

非クラスター化列ストアインデックスのオンライン作成 / 再構築のサポート•

列ストアインデックス

GRANT Database Scoped Credential Permissions (Transact-SQL)

https://docs.microsoft.com/en-us/sql/t-sql/statements/grant-database-scoped-credential-transact-sql

DATABASE SCOPED CREDENTIAL に対して、セキュリティ保護 (権限によるアクセスの制限) が可能•

セキュリティ

データベーススコープの SAS の資格情報を作成する▪

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'xxxxxxxx'

準備○

BULK INSERT / OPENROWSET の Azure BLOB ストレージのサポート•

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 T1

FROM 'file/ImportData.txt'

DATA_SOURCE = 'MyAzureBlobStorage',

FIELDTERMINATOR = ','

WITH (

)

OPENROWSET (Transact-SQL)

https://msdn.microsoft.com/en-us/library/ms190312.aspx

SELECT *

BULK 'file/ImportData.txt',

DATA_SOURCE = 'MyAzureBlobStorage',

SINGLE_CLOB

FROM OPENROWSET(

) AS T1

アクセス方法○

クラウド連携

SQL Server 2017 チートシート - 3 ページ

Page 4: SQL Server 2017 データベースエンジン 新機能 (RC2 版)

SELECT *

BULK 'file/ImportData.txt',

DATA_SOURCE = 'MyAzureBlobStorage',

FORMATFILE='file/ImportData.fmt',

FORMATFILE_DATA_SOURCE = 'MyAzureBlobStorage'

FROM OPENROWSET(

) 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

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 というシステムカタログビューが追加されており、インデックスの再構築状況を確認することが可能○

ドキュメント上は読み取り主体のワークロードでは影響はないが、更新系のワークロードでは、10% 未満の性能劣化が発生□

再構築を停止している場合、インデックスに対しての変更は、現状のインデックスと再構築により、再作成しているインデックスの 2 箇所に対して実施される○

Sch-M 同士のロック取得はロック競合が発生する□

ベーステーブルに LOB が含まれている場合、再開可能なオンラインインデックス再構築は 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/

再開可能なオンラインインデックスリビルド○

インデックスメンテナンス•

CREATE AVAILABILITY GROUP (Transact-SQL)

https://docs.microsoft.com/en-us/sql/t-sql/statements/create-availability-group-transact-sql

WSFC / EXTERNAL / NONE の設定で利用するクラスターマネージャーの制御が可能▪

3 種類のクラスタータイプのサポート○

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/

EXTERNAL の場合は、WSFC 以外のテクノロジーに、フェールオーバーの制御を任せる動作となる

CTP 2.0 で EXTERNAL が追加され、Pacemaker を使用した可用性グループは EXTERNAL で作成する□

CREATE AVAILABILITY GROUP (Transact-SQL)

https://msdn.microsoft.com/ja-jp/library/ff878399.aspx

CLUSTER_TYPE = { WSFC | NONE | 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 の可用性グループのサポート○

Windows / Linux で、データ同期として、同一のソリューションを使用することができる□

CTP 2.0 で可用性グループリスナーをサポート、自動フェールオーバーについてはクラスターレスはサポートしていない□

ワークグループクラスターより敷居を低くして、可用性グループを利用することができる

クラスターの構築が不要なため、単一の可用性グループで設置場所に依存しない可用性グループをシンプルに作成することができる□

HA は不要だが、読み取りスケールが可能な環境が必要な場合の構成として利用することができる

セカンダリをバックアップ環境として利用

複製を行うための方法として利用することもできる

Read Scale With Availability Group□

CTP 1.3 では、クラスターの可用性グループリソースを作成しない構成のため、可用性グループリスナーを使用した透過的な接続や、自動フェールオーバーに対応していない▪

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

クラスターレスの可用性グループのサポート○

同期コミットモードを使用している場合の「REQUIRED_COPIES_TO_COMMIT」によるコミットに必要となる可用性レプリカの制御

AlwaysOn 可用性グループ•

高可用性

SQL Server 2017 チートシート - 4 ページ

Page 5: SQL Server 2017 データベースエンジン 新機能 (RC2 版)

RC1 で、「REQUIRED_SYNCHRONIZED_SECONDARIES_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

同期コミットモードを使用している場合の「REQUIRED_COPIES_TO_COMMIT」によるコミットに必要となる可用性レプリカの制御○

分散可用性グループでクロスプラットフォーム間の可用性グループを接続してデータの同期を実施▪

クラスターレスもクロスプラットフォームは設定できる▪

クロスプラットフォームの OS 間 (Windows / Linux) の可用性グループのサポート○

AlwaysOn 可用性グループでのサポートであり、データベースミラーリングに対しては SQL Server 2017 を使用してもサポートはされない○

トランザクションの中止以外の操作が選択できる?▪

Configure availability group for distributed transactions

https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/configure-availability-group-for-distributed-transactions

今後のプレビューで、トランザクションの結果を選択できるようにするオプションが追加される予定○

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

分散トランザクション対応の可用性グループを構成する

https://docs.microsoft.com/ja-jp/sql/database-engine/availability-groups/windows/configure-availability-group-for-distributed-transactions

トランザクション - 可用性グループとデータベース ミラーリング

https://docs.microsoft.com/ja-jp/sql/database-engine/availability-groups/windows/transactions-always-on-availability-and-database-mirroring

可用性グループ利用時の同一インスタンス内のデータベースに対しての分散トランザクションのサポート○

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

可用性グループでコミット時に必要な最小のレプリカ数を設定可能○

Performance Improvements using Database Engine Tuning Advisor (DTA) recommendations

https://msdn.microsoft.com/en-us/library/mt805801.aspx

Columnstore index recommendations in Database Engine Tuning Advisor (DTA)

https://msdn.microsoft.com/en-us/library/mt805316.aspx

列ストアインデックスの推奨情報のアドバイス (-fc オプションの追加)○

Tuning Database Using Workload from Query Store.

https://msdn.microsoft.com/en-us/library/mt805317.aspx

クエリストアをワークロードとして利用した解析の実施 (-iq オプションの追加)○

SQL Server 2016 以降を解析対象とした、Database Tuning Advisor (DTA) の機能向上 (SSMS 16.4 の機能向上)•

New in SSMS: Performance Dashboard built-in

https://blogs.msdn.microsoft.com/sql_server_team/new-in-ssms-performance-dashboard-built-in/

SSMS 17.2 にパフォーマンスダッシュボードのカスタムレポートの追加•

SQL Server vNext on Linux

https://www.slideshare.net/TravisWright4/sql-server-vnext-on-linux/16

Brk3288 sql server v.next with support on linux, windows and containers wash dc

https://www.slideshare.net/BobWard28/brk3288-sql-server-vnext-with-support-on-linux-windows-and-containers-wash-dc/18

Brk3288 sql server v.next with support on linux, windows and containers wash dc

https://www.youtube.com/watch?v=gVUgBlCc6cA&feature=youtu.be&t=2103

クロスプラットフォーム対応の GUI ベースの DB 管理ツール (計画)•

管理ツール

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/

テンポラルテーブルの保持期間ポリシーのサポート•

SQL Server 2012 以降は、IDENTITY はキャッシュしたものから割り当てられており、SQL Server が異常終了すると、キャッシュが破棄され連番がスキップされていた▪

IDENTITY のキャッシュを無効にすることができる○

トレースフラグ 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_CACHE の設定を変更可能 (デフォルトは有効)•

従来の SAFE / EXTERNAL ACCESS は UNSAFE での動作となる▪

署名されていないアセンブリが読み取られなくなる▪

SQL Server 2016 までと CLR のセキュリティのデフォルトの制限が変更されており、サーバーオプションを変更することで下位互換のモードにすることが可能○

CLR strict security

https://docs.microsoft.com/ja-jp/sql/database-engine/configure-windows/clr-strict-security

sys.sp_add_trusted_assembly (Transact-SQL)

CLR アセンブリのホワイトリストの設定 (CLR の厳格なセキュリティの緩和を行える)○

CLR の厳格なセキュリティ•

開発

SQL Server 2017 チートシート - 5 ページ

Page 6: SQL Server 2017 データベースエンジン 新機能 (RC2 版)

sys.sp_add_trusted_assembly (Transact-SQL)

https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-add-trusted-assembly-transact-sql

sys.sp_drop_trusted_assembly (Transact-SQL)

https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-drop-trusted-assembly-transact-sql

sys.trusted_assemblies (Transact-SQL)

https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-trusted-assemblies-transact-sql

不正アクセス / ソーシャルグラフ等のデータを表現するためのデータストアとして利用することが可能▪

データのリレーションシップを自分で定義することができる▪

データ間の接続が明確でないものを明らかにすることができる□

データの相互関係性を分析▪

既存の事実から新しい情報を具体化 / 洞察する▪

グラフデータベース互換の多対多のリレーションシップをサポート○

ノード (頂点) とエッジ (関係) を使用してデータを表現○

SQL を使用して、既存のテーブルとグラフデータベースのテーブルの両方を検索することが可能▪

テーブルのため、セキュリティとコンプライアンスには、SQL Server の機能を利用することができる▪

SQL Server (SQL エンジン) に統合されており、クエリで操作をすることが可能であり、列ストア / R / Machile Learning 等の機能とも連携できる○

MATCH 句内のグラフの条件は、 AND でつなぐことができる▪

MATCH 句によってノードのつながりを条件として指定する○

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

Build a recommendation system with the support for graph data in SQL Server 2017 and Azure SQL DB

https://blogs.msdn.microsoft.com/sqlcat/2017/04/21/build-a-recommendation-system-with-the-support-for-graph-data-in-sql-server-2017-and-azure-sql-db/

▪ 現時点では、transitive closure / polymorphism はサポートされていない

○ Graph Data Processing with SQL Server 2017 and Azure SQL Database

https://blogs.technet.microsoft.com/dataplatforminsider/2017/04/20/graph-data-processing-with-sql-server-2017/

○ Graph Database in SQL Server

https://blogs.msdn.microsoft.com/dataplatjp/2017/04/26/graph-database-in-sql-server/

グラフデータ•

○ ON 句でファイルグループを指定することができる

○ SELECT - INTO Clause (Transact-SQL)

https://docs.microsoft.com/ja-jp/sql/t-sql/queries/select-into-clause-transact-sql

SELECT INTO でテーブルの作成を行う際にファイルグループを指定することができる

STRING_AGG (TRANSACT-SQL)

https://msdn.microsoft.com/ja-jp/library/mt790580.aspx

SELECT STRING_AGG(C1, ',') FROM (VALUES(1,2),(2,1),(3,1),(4,4),(1,2)) AS T1(C1, C2)

STRING_AGG (TRANSACT-SQL)

https://msdn.microsoft.com/ja-jp/library/mt790580.aspx

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)

STRING_AGG 関数の WITHIN GROUP 句のサポート○

STRING_AGG 関数の追加○

SELECT CONCAT(N'財閥', N'えろす', N'総帥')

SELECT CONCAT_WS(N'財閥', N'えろす', N'総帥')

CONCAT_WS (Transact-SQL)

https://msdn.microsoft.com/en-us/library/mt775030.aspx

SELECT TRANSLATE('ABC!EFG0', 'A!0', 'Z\9')

TRANSLATE (Transact-SQL)

https://msdn.microsoft.com/en-us/library/mt775084.aspx

SELECT TRIM(' AAAAA '), TRIM('#' FROM '##AAAAA##')

TRIM (Transact-SQL)

https://msdn.microsoft.com/en-us/library/mt775029.aspx

文字列関数の追加•

SQL Server on Linux

https://docs.microsoft.com/ja-jp/sql/linux/sql-server-linux-overview

SQL Server のマルチプラットフォーム対応•

SQL Server on Linux Documentation

https://docs.microsoft.com/en-us/sql/linux/

RC2 の Release Nots では、16.04 のみが記載されるようになったというような変化もあったため、どのバージョンがサポートされるかは必ず最新の情報を確認

SQL Server on Linux•

Docker Engine 1.8 以降をサポート

Docker•

クロスプラットフォーム対応

SQL Server 2017 チートシート - 6 ページ

Page 7: SQL Server 2017 データベースエンジン 新機能 (RC2 版)

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

Docker Engine 1.8 以降をサポート○

Install SQL Server Full-Text Search on Linux

https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-full-text-search

セマンティック検索もサポートされているが、セマンティック言語統計データベースについては、Winodws 版でインストールしたものを持ってくる必要がある○

SQL Server on Linux でのフルテキスト検索のサポート•

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

Subsystems: CmdExec, PowerShell, Replication Distributor, Snapshot, Merge, Queue Reader, SSIS, SSAS, SSRS▪

Alerts▪

DB Mail▪

Log Shipping▪

Log Reader Agent▪

Change Data Capture▪

CTP 1.4 時点では、以下の機能はサポートされていない。○

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 on Linux での SQL Server Agent のサポート•

セットアップパラメーターの指定○

Docker での実行時に Docker コンテナー側のポート番号の指定が可能○

Configure SQL Server settings with environment variables on Linux

https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-configure-environment-variables

SQL Server on Linux 向けの環境変数の追加•

Configure SQL Server on Linux with the mssql-conf tool

https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-configure-mssql-conf

mssql-conf ツールのパラメーター名が 2 パート名に変更•

Encrypting Connections to SQL Server on Linux

https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-encrypted-connections

TLS による接続暗号化のサポート○

Active Directory Authentication with SQL Server on Linux

https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-active-directory-authentication

Active Directory 認証のサポート○

Database Mail

https://docs.microsoft.com/en-us/sql/relational-databases/database-mail/database-mail

DB Mail のサポート○

IP v6 のサポート○

Configure SQL Server settings with environment variables on Linux

https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-configure-environment-variables

SQL Server のセットアップで使用可能な環境変数の強化○

Windows からリモート接続して実行

https://docs.microsoft.com/ja-jp/sql/linux/sql-server-linux-whats-new#rc1

sqlpackage のバイナリが削除されたため、Linux 単体で bacpac の作成ができなくなっている○

SQL Server on Linux のサポート機能の強化•

How the SQLCAT Customer Lab is Monitoring SQL on Linux

https://blogs.msdn.microsoft.com/sqlcat/2017/07/03/how-the-sqlcat-customer-lab-is-monitoring-sql-on-linux/

モニタリングツール○

mssql

https://marketplace.visualstudio.com/items?itemName=ms-mssql.mssql

Visual Studio Code の SQL Server 用 Extension○

https://github.com/Microsoft/sql-xplat-cli▪

/usr/local/bin/mssql-scripter にインストールされる▪

aptget install python-pip

pip install mssql-scripter

pip install --upgrade pip

mssql-scripter -S localhost -U sa -d "DemoDB"

CREATE / INSERT のクエリを生成するためのクロスプラットフォームツール○

mssql-scripter ツール○

https://github.com/Microsoft/dbfs/blob/26f789b399e2aa8d234a5f24aacf4925fd7bb06a/source/helper.cpp#L250

DMV の内容をローカルにダンプするためのツール○

DBFS ツール○

クロスプラットフォーム対応のツール•

SQL Server 2017 チートシート - 7 ページ

Page 8: SQL Server 2017 データベースエンジン 新機能 (RC2 版)

https://github.com/Microsoft/dbfs/blob/26f789b399e2aa8d234a5f24aacf4925fd7bb06a/source/helper.cpp#L250

https://github.com/Microsoft/dbfs

SELECT name from sys.system_views の内容をもとに生成している▪

sudo wget https://github.com/Microsoft/dbfs/releases/download/0.1.5/dbfs_0.1.5_amd64.deb

sudo dpkg -i dbfs_0.1.5_amd64.deb

sudo apt-get install -f

ozawa@SoL01:~$ vi dmvtool.config

[server]

hostname=localhost

username=sa

password=ZAQ!2wsx

version=16

dbfs -c ./dmvtool.config -m ./dmv

# デフォルトはバックグラウンドモードで動作しているため、情報の取得を中止したい場合はプロセスを終了させる

pkill dbfs

# フォアグラウンドモードで詳細なログを出力する場合

dbfs -c ./dmvtool.config -m ./dmv -f -v

Community driven Enhancements in SQL Server 2017

https://blogs.msdn.microsoft.com/sql_server_team/sql-server-community-driven-enhancements-in-sql-server-2017/

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/

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 CTP 1.2 now available

https://blogs.technet.microsoft.com/dataplatforminsider/2017/01/20/sql-server-next-version-ctp-1-2-now-available/

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 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/

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/

First release candidate of SQL Server 2017 now available

https://blogs.technet.microsoft.com/dataplatforminsider/2017/07/17/first-release-candidate-of-sql-server-2017-now-available/

アナウンス

SQL Server 2017 チートシート - 8 ページ