SE の雑記

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

Archive for the ‘PowerShell’ tag

PowerShell 実践ガイドブック の Kindle 版が更新されたとのことなのでアップデートしてみる

leave a comment

PowerShell 実践ガイドブックを読みました で投稿を書いた PowerShell 実践ガイドブックの Kindle 版がアップデートされたとのことなので、さっそくアップデートしてみました。

以前、Kindle 版で PowerShell 実践ガイドブックを購入していた場合、現時点 (2021/10/21 時点) でアップデートできると思います。

Kindle 本のアップデートですが、Kindle本のバージョンをアップデートする に記載されているアップデート方法で、アップデートできるという認識だったのですが私の環境ではアップデートすることができませんでした。(一度端末から書籍を削除して、再度ダウンロードしてもアップデートされませんでした)

そこで、カスタマーサービス のチャットから、https://www.amazon.co.jp/dp/B07D73G2X7 の書籍の更新が行われているはずであるため、アップデートしたいことを伝えたところ、最新版である初版第5刷が配布されてきました。

image

カスタマーサービスで対応してくださった方に聞いてみたところ、通常、Kindle 本のバージョンをアップデートするに記載されている、コンテンツと端末の管理 からアップデートできるはずなのですが、まれにアップデートできないことがあり、その場合はカスタマーセンターに連絡してアップデートをしてもらうことになるということでしたので、今回実施した対応であっていたようです。

  • Kindle に既にダウンロードしている書籍を「端末から削除」して再度開いてもアップデートされない
  • コンテンツと端末の管理 で PowerShell 実践ガイドブックを表示してもアップデートが表示されない

というような状態になっている場合には、

ことを伝えると、カスタマーサービスでアップデートを実施してくれます。

その際、現在の書籍でブックマーク等を実施している場合はクリアされることが伝えらえると思いますので、それに同意すれば、最新版の配信が行われるかと思います。(私はこの流れで配信されました)

アップデートすることで、PowerShell 7 対応の内容の加筆分の確認や、今までは目次が「見出し 1 レベル (章レベル)」までしか表示されなかったものが「見出し 2 レベル (節レベル)」まで表示されるようになっており、書籍の内容が大幅に充実していました。

更新されてありがたや、ありがたや ということで、また読み直したいと思います。

Written by Masayuki.Ozawa

10月 21st, 2021 at 8:11 am

Posted in PowerShell

Tagged with

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 実践ガイドブックを読みました

leave a comment

PowerShell実践ガイドブック クロスプラットフォーム対応の次世代シェルを徹底解説」 という書籍が発売され、最近時間を見つけては読み進めていました。
正誤表はこちら。
『PowerShell実践ガイドブック』サポートページ

PowerShell の情報を探していると、高確率でヒットする、tech.guitarrapc.comぎたぱそせんせー  が書かれ、ちまたでは #貝殻本 と呼ばれている書籍です。
書籍の内容をきちんと理解できたというレベルには至っていませんが、最後までパラパラと読むことができたので、感想などをポチポチ書いてみたいと思います。
Read the rest of this entry »

Written by Masayuki.Ozawa

6月 16th, 2018 at 1:15 pm

Posted in その他

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 ,