Upload
masayuki-ozawa
View
597
Download
0
Embed Size (px)
Citation preview
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 ページ
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 ページ
一部のケースで、インメモリ テーブルに対する 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 ページ
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 ページ
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 ページ
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 ページ
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 ページ
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 ページ