SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SQL Server 2017 新機能 (CTP 2.0 版)

leave a comment

SQL Server 2017 の新機能をざっくりまとめたものとなります。

docs.com にも同一の内容をおいていますので、PDF で見たい場合などはこちらをご利用ください。

わかった気になれるかもしれない SQL Server 2017 新機能

全体


SQL Server Management Studio

17.0

  • SQL Server v.Next への対応
  • Always Encrypted のパラメーター化

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

  • SQL Database の Azure Active Directory ユニバーサル認証のサポート
  • SQL Database のフルテキスト検索/ロール/データベース作成のスクリプト生成のサポート
  • ユーティリティコントロールポイントの UI の削除
  • プレゼンターモードの追加
  • クエリプランの比較で基数推定の違いを確認可能

参考情報


データベースエンジン

CTP 1.0

  • 互換性レベル 140 の追加
  • 増分統計の更新の閾値の計算方法の改善 (互換性レベル 140)
  • sys.dm_exec_query_statistics_xml による、実行中のクエリの実行プランの取得
  • 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 関数の追加

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

CTP 1.1

  • メモリ最適化テーブルとネイティブコンパイル関数の機能強化
    • 計算列 / 計算列に対してのインデックス作成のサポート
    • ネイティブコンパイルモジュールでの JSON 関数の完全サポートと、チェック制約のサポート
  • 文字列関数の追加

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

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

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

SELECT TRIM(‘ AAAAA ‘), TRIM(‘#’ FROM ‘##AAAAA##’)

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)

  • 新しい日本語照合順序のサポート
  • 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)

BULK INSERT T1

FROM ‘file/ImportData.txt’

WITH (

DATA_SOURCE = ‘MyAzureBlobStorage’,

FIELDTERMINATOR = ‘,’

)

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

CTP 1.2

CTP 1.3

CTP 1.4

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
  • 再開可能なオンラインインデックスリビルド
    • 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) — 再開

  • データベーススコープの構成で 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
  • 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
  • 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 );

  • メモリ最適化テーブルの非クラスター化インデックスのパフォーマンスの改善
    • データリカバリ中の非クラスター化インデックスの構築のパフォーマンスが大幅に最適化されたことによる、データベースの回復時間が大幅に短縮される。
      • サービス起動時の DB へのアクセスが可能となる復旧時間の短縮につながる
  • 可用性グループ利用時の同一インスタンス内のデータベースに対しての分散トランザクションのサポート

参考資料


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 をサポート

参考資料


SSIS

CTP 1.0

clip_image004

clip_image005

clip_image006

  • ODATA 対応
    • OData にアクセスできるようになったことで、Dynamics AX Online / Dynamics CRM Online の OData Feed にアクセスできるようになった。

参考資料


SSAS

CTP 1.1

CTP 1.3

CTP 2.0

  • 表形式モデルのメタデータをオブジェクトレベルで保護
  • 表形式モデルを使用した場合、Power BI フィールドリストから階層と列を再利用することが可能
    • Power BI で一貫したモデルのエクスペリエンスを実現する
      • 現状は JSON を使用した TMSL を操作することで実現している
  • 日付フィールドを使用して、日付の階層を簡単に作成することが可能
  • デフォルトのインストールオプションが「表形式モード」に変更
  • SSDT 17.0 GA で表形式モデルの互換性レベル 1400 でダイレクトクエリ データソースの M クエリのサポート
  • SSDT の DAX エディタのサポート
  • Power Query Like なデータソースの操作
  • 各種改善
    • 1200 / 1400 モデルのダイナミック管理ビューの改善
      • 互換性レベル 1100 / 1103 の表形式モデルで使用できていた DISCOVER_CALC_DEPENDENCY DMV が利用可能になる
    • SSDT 17.0 GA を使用することで、詳細行のインテリセンスと強調表示の選択のエクスぺりセンスの改善
    • 構造化されたデータソースの表示 / 編集 / スクリプティングのサポートについての SSMS の改善
    • より高い開発体験のためのトランザクションパフォーマンスの改善

参考資料


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 を利用することも可能

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

  • SQL Server を使用しない、SQL Server Machine Larning サービス (スタンドアロン) としてもインストールすることができる
    • In-Database であれば、Express でも使用できるが、スタンドアロンは Express では使用できなかった。
  • データベース内 / スタンドアロンともに最新の Microsfot R の最新バージョン (9.1.0) が含まれている

参考資料


その他の参考資料

Written by masayuki.ozawa

4月 23rd, 2017 at 2:17 pm

Leave a Reply

*