4. 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 "rn" 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 ページ
5. 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 ページ
6. 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', 'Z9')
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 ページ
7. 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 ページ
8. 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 ページ