PowerShell で操作する SQL Server クックブック(性能情報の取得2)

Microsoft Japan Data Platform Tech Sales Team

西村哲徳

みなさん、こんにちわ。前回は PowerShell で性能情報を取得する方法を紹介しました。 内容はカウンター名から性能情報の取得まですべて全て PowerShell で実行する方法でしたがパフォーマンス モニターの GUI で設定した性能情報をコマンドで開始、終了することもできます。最初に思い浮かぶコマンドが logman という方も多いと思いますが、今回は PowerShell 版を紹介します。

 

1.データ コレクター セットの作成

まず最初にパフォーマンス モニターでユーザ定義のデータ コレクター セットの作成方法を紹介します。取得したいパフォーマンス カウンターをデータ コレクター セットに追加し作成することで指定した情報をまとめて取得することができるようになります。 通常の運用では常に実行しておくことで定常的にパフォーマンスの監視をすることができます。

ではスクリーンショットとともに設定作業を見ていきます。

1.パフォーマンス モニターを起動します。

2.データ コレクター セット->ユーザ定義を右クリックし新規作成->データ コレクター セットをクリックします。

01

3.任意のデータ コレクター セット名を入力し、手動で作成するを選択します。

02

4.データログを作成するを選択し、その中のパフォーマンス カウンターをチェックします。

03

5.取得したいパフォーマンス カウンターを追加します。

ここでは SQL Server:Access Method のみを選択しますが必要に応じて追加してください。

04

6.作成を完了します。

05

 

これで myCollector というデータ コレクター セットが作成されました。そのまま GUI で開始して性能情報を取得することもできますが今回は PowerShell から実行してみます。

2.PowerShellからデータ コレクター セットの実行

まず最初に PLA.DataCollectorSet オブジェクトを作成します。PLA はPerformance Logs and Alerts の略です。(このオブジェクトのメソッドやプロパティはこちらを参照ください。)

 $myDCS=New-Object -ComObject PLA.DataCollectorSet

作成した時点の $myDCS は特に名前もなく殻だけなので、1 で作成した myCollector と紐づける必要があります。紐づけるためにはこのオブジェクトのメソッド Query を実行します。

 $myDCS.QUERY("myCollector", "localhost")

第一引数はデータ コレクタ セット名で、第二引数はサーバ名になります。このメソッド実行後に $myDCS を見ると下記のように先ほど作成したデータ コレクター セットのが属性が設定されていることがわかります。

 PS C:\Users\tetsu.MYDOMAIN> echo $myDCS
DataCollectors : System.__ComObject
Duration : 0
Description : 
DescriptionUnresolved : 
DisplayName : 
DisplayNameUnresolved : 
Keywords : {}
LatestOutputLocation : 
name : myCollector
OutputLocation : C:\PerfLogs\Admin\myCollector\SQL2016EESP1-01_20170206-000001
RootPath : %systemdrive%\PerfLogs\Admin\myCollector
Segment : False
SegmentMaxDuration : 0
SegmentMaxSize : 0
SerialNumber : 1
Server : localhost
Status : 0
Subdirectory : 
SubdirectoryFormat : 3
SubdirectoryFormatPattern : yyyyMMdd\-NNNNNN
Task : 
TaskRunAsSelf : False
TaskArguments : 
TaskUserTextArguments : 
Schedules : System.__ComObject
SchedulesEnabled : True
UserAccount : SYSTEM
(以下省略)

OutputLocation にファイルが出力されるので relog を使って分析しやすいフォーマットに変換することができます。relog の使い方はこのページを参照してください。

では最後にデータ コレクター セットを開始、終了する方法を紹介します。

 #開始方法
$myDCS.start($true)

<測定対象処理の実行>

#終了方法
$myDCS.stop($true)

引数は$true, $falseどちらでも構いませんが$trueは開始、終了の成功または失敗が確定してからリターンしますが、$falseの場合はキューにセットしてすぐにリターンする動きになります。 startメソッドがリターンしてもstopまでは性能情報の取得は続いてますので、前回のようにバックグラウンド実行をする必要はありません。

前回、今回と PowerShell で性能情報を取得する方法を紹介しました。是非、性能評価などの時に試してみてください。

 

関連記事