2021/4 の関連情報です。
5 月に Build 2021 がありますので、来月はボリュームが多いかもしれませんね。
Archive for 4月, 2021
2021/4 の SQL Server / SQL Database 関連の更新情報
PowerShell の Foreach-Object の Parallel パラメーターの情報
PowerShell は 7.0 以降で、Foreach-Object で Parallel パラメーターが使用できるようになりました。
従来までは、複数スレッドで処理をする場合は、Windows PowerShell ワークフロー / ジョブ / Runspace などを使用するケースがありました。(Windows PowerShell ワークフローは 5.1 までしか使用できないので、現時点で利用することはほとんどない気もしますが)
- Windows PowerShell ワークフローの概念
- PowerShell ジョブを使用したコマンドレットの並列実行
- Beginning Use of PowerShell Runspaces: Part 1
PowerShell 7.0 以降では、Foreach-Object の Parallel パラメーターを使用することで複数スレッドの処理をシンプルに記述することができるようになっています。
$SampleText = "PowerShell Foreach-Object Parallel" Clear-Host Measure-Command { 1..50 | Foreach-Object { $text = $SampleText Write-Host ("{0} : {1}" -f $text, $_) } } Measure-Command { 1..50 | Foreach-Object -ThrottleLimit 5 -Parallel { $text = $using:SampleText Write-Host ("{0} : {1}" -f $text, $_) } }
PowerShell ForEach-Object Parallel Feature には次のように記載されています。
However, there is still quite a bit of overhead to run script blocks in parallel. Script blocks run in a context called a PowerShell
runspace
.
シンプルな処理では、スクリプトブロックを並行で実行する際のオーバーヘッドにより、Parallel を使用しない方が処理が短時間で実行されるケースもありますので、どのような処理を並行で実行するかについては注意しておく必要がありますが、1 回の実行に数秒かかる処理などは並行実行すると効果があるのではないでしょうか。
Azure Functions の PowerShell ランタイムも PowerShell のバージョンが 7.0 になっていますので、Azure 上で関数を実行する場合にも効果的に動作するケースがあるかと思います。(Azure Automation については How can we improve Azure Automation service? に記載されていますが、CY21 Q4 に、PowerSHell 7.0 をサポート予定のようです)
Foreach-Object で Parallel パラメーターを使用したした際の情報ですが、冒頭に記載したリリース時の情報だけでなく、docs のドキュメントでいくつかの情報が公開されていますので、どのような情報があるかをまとめておきたいと思います。
Database Migration Assistant (DMA) で SQL Server から SQL Database へのデータ移行方法について
SQL Server から SQL Server ベースの環境へのマイグレーションに使用することができるツールとして、Database Migration Assistant (DMA) という無償のツールが提供されています。
このツールでは、SQL Server から SQL Database へのスキーマ移行 / データ移行をサポートしており、SQL Server の環境を SQL Database に移行する際に利用することができます。
このツールの中で、SQL Database にデータを移行する際には、どのような方法を使用しているのかが理解できると、SQL Server ベースの環境の移行に活用できるのではと思い、データ移行方法を調べてみました。
Read the rest of this entry »SQL Server / SQL Database における同値で UPDATE をした場合の挙動について
SQL Server / SQL Database で UPDATE を実行する際に、現在の値と同じ値で更新 (SET 句に指定した変更内容が現在の値と同じ) をした場合の挙動について触れておきたいと思います。
SQL Database で sys.fn_xe_telemetry_blob_target_read_file を使用して標準取得されているテレメトリ情報を確認する
SQL Database のテレメトリ情報を取得する方法としては、次の DMV / システムビューを検索するという方法があります。
- sys.resource_stats
- sys.dm_db_resource_stats
- sys.dm_resource_governor_resource_pools_history_ex
- sys.dm_resource_governor_workload_groups_history_ex
SQL Database で発生している「イベント」を取得する方法としては、sys.event_log を参照するという方法があるのですが、このシステムビューは、検索に時間がかかる、かつ、v11 での利用を想定しており、現在の v12 の環境では有益な情報を取得できないケースがあります。
v12 の環境で、「発生しているイベント」を取得する方法として、sys.event_log / 拡張イベントを使用しなくても標準で取得されているテレメトリからイベントを取得するという方法がありますので、本投稿ではその方法についてみていきたいと思います。
現状、初期状態で「デッドロック」の情報を取得するためには、本投稿の内容を使用することになるかと思います。
Azure Functions (PowerShell ランタイム) でマネージド ID を使用して SQL Database に接続を行う
Azure Functions の PowerShell ランタイムでマネージド ID (Managed Identity) を使用して SQL Database に接続をする方法についてまとめておきたいと思います。
Azure で SQL Server ベースの環境の活用方法を学ぶためのコンテンツ
Azure の各機能を学習する場合は、各機能 (サービス) のドキュメントを確認することで学習ができます。
- Azure のドキュメント : 各サービス / 機能
最近ですと Microsoft Learn を活用して機能を学習することもできますね。
Microsoft Learn 上では、SQL Server についてのコンテンツ も公開されています。
しかし、機能を活用するためのソリューションとして学習を行う場合には、各機能のドキュメント / Microsoft Learn の情報では足りなくなることもあるかと。
ソリューションとして学習する際には、どのようなドキュメントを確認すればよいかをまとめておきたいと思います。
SQL Server 2019 on Linux が CU10 で Ubuntu 20.04 のサポートを開始しました
先日公開された、SQL Server 2019 CU 10 から、SQL Server on Linux が Ubuntu 20.04 をサポートするようになりました。
- SQL Server 2019 on Ubuntu 20.04,python2 dependency removed for SQL Server 2019 across distributions.
これに伴い、SQL Server on Linux の各種ドキュメントにも Ubuntu 20.04 の記述が追加されています。
- What’s new for SQL Server 2019 on Linux
- Quickstart: Install SQL Server and create a database on Ubuntu
- Quickstart: Run SQL Server container images with Docker
Big Data Cluster のコンテナーのイメージについても Ubuntu 20.04 が使用されるようになったようですね。
DBCC SHRINKFILE によるファイル圧縮の動作 (データファイル編)
SQL Server では、DBCC SHRINKFILE という DBCC コマンドを使用することで、データファイル / ログファイルのサイズを圧縮することができます。
データベースのファイルを配置しているドライブの空き容量の不足や、大量の一時的なデータを投入後に、データの削除を行った後にデータベースの物理ファイルが過剰に増加している場合に、ファイルサイズを小さくするというような場合に使用するもので、一般的には日常的に使用するものではありません。
しかし、何らかの理由によってデータベースのファイル (mdf / ndf / ldf) が肥大化し、DBCC SHRINKFILE の実行が必要となるケースもあるのではないでしょうか。
本投稿では、DBCC SHRINKFILE を使用して物理データファイルを圧縮し、サイズを削減する際にはどのような動作になっているのかをまとめておきたいと思います。
SQL Database で包括的なパーミッションによる動的データマスキングが可能となりました
次のアナウンスで情報が公開されていますが、SQL Database と Synapse Analytics で包括的なパーミッションによる動的データマスキング (Genular Permissions for Dynamid Data Masking) が可能となりました。
- General availability: Dynamic data masking granular permissions for Azure SQL and Azure Synapse Analytics
- Granular Permissions for Azure SQL Dynamic Data Masking
動的データマスキング (動的データマスク) の基本的な使用については次のドキュメントから確認することができます。
- 動的なデータ マスキング (SQL Server 向けドキュメント)
- 動的データ マスク (SQL Database 向けドキュメント)
現時点では、SQL Database 向けの設定となっており、オンプレミスの SQL Server の最新バージョンである SQL Server 2019 では、包括的なパーミッションは利用することはできませんのであしからず。