SE の雑記

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

Archive for the ‘PowerShell’ Category

PowerShell で Microsoft.Data.SqlClient のイベントトレースを取得する

leave a comment

System.Data.SqlClient のイベントトレースについては BID (Built-In Diagnostics) トレースで実装されていたため、BID トレースの設定を有効化する必要があったかと思います。
BID トレースについては次のドキュメントで解説が行われています。

最新の SQL Server のデータプロバイダーである、Microsoft.Data.SqlClient では、イベントトレースの取得方法が BID から、EventSoure からのイベントの取得に変わっているようです。

有効化の方法については、SqlClient でのイベントのトレースの有効化 で記載されていますが、C# であれば、ドキュメントに記載されている方法でトレースを取得することができます。

PowerShell (7.0.2) で Microsoft.Data.SqlClient 2.0 を使用する の Windows PowerShell についての記述を追加していて、PowerShell で Microsoft.Data.SqlClient を実行した場合にもトレースが取得できるのかが気になったので試してみました。

今回、コネクションプールの調査でイベントトレースを使用していたのですが、System.Data と Microsoft.Data のイベントトレースの出力の違いについては、次のソースを確認してみても良いのではないでしょうか。

Read the rest of this entry »

Written by Masayuki.Ozawa

5月 17th, 2021 at 10:44 pm

Posted in PowerShell,SQL Server

Tagged with ,

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

PowerShell (7.0.2) で Microsoft.Data.SqlClient 2.0 を使用する

leave a comment

Released: General Availability of Microsoft.Data.SqlClient 2.0 でアナウンスされましたが、.NET で SQL Server にアクセスするための最新のデータプロバイダーである Microsoft.Data.SqlClient 2.0 がリリースされました。

アナウンスや、リリースノート でも触れられていますが、いくつかの機能が追加されています。

Some of the highlights of new features over the 1.1 release of Microsoft.Data.SqlClient include:

 

PowerShell から新機能の検証をしようと思ったところ、Microsoft.Data.SqlClient 2.0 を使用するのにちょっとハマったので、メモを残しておこうかと。

動作方法がよくわかっていなかったので、"Microsoft.Data. SqlClient is not supported on this platform." when trying to use it in PowerShell 7.0.2 で助けていただきました (感謝)

Microsoft.Data.SqlClient with PowerShell も参考にさせていただきました。
(本ドキュメントを書かれていた方に Issue でヘルプいただけて感謝、感謝)

Microsoft.Data.SqlClient については Microsoft.Data.SqlClient 名前空間の概要 でドキュメントが公開されていますので、こちらも確認すると良いかと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

6月 22nd, 2020 at 9:52 pm

Posted in PowerShell,SQL Server

Tagged with ,

Graphical を使用して PowerShell でグラフを描画

leave a comment

PowerShell でグラフの描画をしようとしたとき、Chart Control を使用してグラフを作成するという方法があります。

単純なグラフがこれ以外の方法で描画できないかなと思い探してみたところ、Graphical というモジュールが手軽に使えそうでしたので、少し試してみました。
Read the rest of this entry »

Written by Masayuki.Ozawa

1月 21st, 2020 at 11:17 pm

Posted in PowerShell

Tagged with

PowerShell の Runspace を使用して複数のクエリを実行してみる

leave a comment

以前、投稿した SQL Server on Linux のデータベース バックアップを PowerShell Core で取得してみる のスクリプトをベースにしたものですが、Runspace を使用して複数のクエリを実行するスクリプトを作ってみました。
Invoke-ParallelQuery.ps1
「複数のセッションからクエリ実行したときの、あの動き、どうだったっけ?」というのを確認するために、ざっくり作ったものなので、時間のある時に清書しようかと。
実行が 10 数ミリ秒で終わってしまうものですと、実行タイミングがかぶることが無く、あまりこのスクリプトを使う必要はないのですが、「数秒以上かかるメンテナンスのクエリが実行されている最中に、他のクエリを実行するとどうなるか?」というような用途での利用を想定したものです。
SQLQueryStress ですと、同一のクエリを複数セッションで実行する方式となり、異なるクエリを同時に実行するためには、複数ツールを起動した状態にしなくてはいけないので、その部分を簡易的に埋める目的もあったりしますが。
データセットの情報を別で表示する際に「Out-Gridview」を使用しているため、Windows PowerShell 専用となっているところもどこかで対応したいですねぇ。。。
Read the rest of this entry »

Written by Masayuki.Ozawa

6月 7th, 2018 at 11:18 pm

Posted in PowerShell,SQL Server

Tagged with ,

SQL Server on Linux のデータベース バックアップを PowerShell Core で取得してみる

leave a comment

de:code 2018 では、SQL Server on Linux のデータベースバックアップを bash + sqlcmd で実装する方法をデモで実施しました。
Windows PowerShell から、バックアップを取得するスクリプトも以前組んだことがあったのですが、PowerShell Core で実装したことが無かったので、勉強がてら作成してみました。
(Windows PowerShell (v5.1) でも実行可能です)
Backup-Database.ps1
image_thumb2

pwsh./Backup-Database.ps1 -ServerInstance <ServerName> -Username <Login> -P <Login Password> -RunSpaceSize 5

Read the rest of this entry »

Written by Masayuki.Ozawa

6月 2nd, 2018 at 5:15 pm

スクリプトによる Power BI のプッシュデータセットの作成

leave a comment

Power BI のストリーミングデータセットについては、ポータルから簡単に作成することができます。
Power BI のリアルタイム ストリーミング
投稿作成時点では、ポータルから作成した、ストリーミングデータセットについては、Power BI デスクトップの「Power BI サービスからのデータの取得」では使用することができないため、PowerShell で Power BI のプッシュデータセットを作成してみました。
プッシュデータセットであれば、複数のテーブルをデータセットに含めることもできますので、ストリーミングデータセットより高度な内容ができるかと。
 
基本的な流れと REST API については以下の情報を参考にするとよいかと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

6月 3rd, 2017 at 5:47 pm

Posted in Power BI,PowerShell

Tagged with ,