SE の雑記

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

Archive for 4月, 2021

2021/4 の SQL Server / SQL Database 関連の更新情報

leave a comment

2021/4 の関連情報です。
5 月に Build 2021 がありますので、来月はボリュームが多いかもしれませんね。

Read the rest of this entry »

Written by Masayuki.Ozawa

4月 29th, 2021 at 8:56 pm

PowerShell の Foreach-Object の Parallel パラメーターの情報

one comment

PowerShell は 7.0 以降で、Foreach-Object で Parallel パラメーターが使用できるようになりました。

従来までは、複数スレッドで処理をする場合は、Windows PowerShell ワークフロー / ジョブ / Runspace などを使用するケースがありました。(Windows PowerShell ワークフローは 5.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 のドキュメントでいくつかの情報が公開されていますので、どのような情報があるかをまとめておきたいと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

4月 20th, 2021 at 10:48 am

Posted in PowerShell

Tagged with

Database Migration Assistant (DMA) で SQL Server から SQL Database へのデータ移行方法について

leave a comment

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 »

Written by Masayuki.Ozawa

4月 19th, 2021 at 9:21 pm

Posted in SQL Database

Tagged with

SQL Server / SQL Database における同値で UPDATE をした場合の挙動について

one comment

SQL Server / SQL Database で UPDATE を実行する際に、現在の値と同じ値で更新 (SET 句に指定した変更内容が現在の値と同じ) をした場合の挙動について触れておきたいと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

4月 15th, 2021 at 9:48 pm

SQL Database で sys.fn_xe_telemetry_blob_target_read_file を使用して標準取得されているテレメトリ情報を確認する

one comment

SQL Database のテレメトリ情報を取得する方法としては、次の DMV / システムビューを検索するという方法があります。

SQL Database で発生している「イベント」を取得する方法としては、sys.event_log を参照するという方法があるのですが、このシステムビューは、検索に時間がかかる、かつ、v11 での利用を想定しており、現在の v12 の環境では有益な情報を取得できないケースがあります。

v12 の環境で、「発生しているイベント」を取得する方法として、sys.event_log / 拡張イベントを使用しなくても標準で取得されているテレメトリからイベントを取得するという方法がありますので、本投稿ではその方法についてみていきたいと思います。

現状、初期状態で「デッドロック」の情報を取得するためには、本投稿の内容を使用することになるかと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

4月 15th, 2021 at 9:38 am

Posted in SQL Database

Tagged with