SE の雑記

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

PSSDIAG と SQLDiag について

leave a comment

SQL Server の情報を取得するためのツールとして PSSDIAG と SQLDiag があります。
# SQL Server 2005 以降は SQLdiag を使う機会が多いと思いますが。
PSSDIAG データ収集ユーティリティ
PSSDIAG Data Collection Utility
SQLdiag ユーティリティ
Pssdiag and Sqldiag Manager

コンサルに近いような案件では SQL Server の状態取得することもやったりするのですが、普段は OS 標準のパフォーマンスモニターや DMV を自分で取捨選択して情報の取得をしています。

PSSDIAG / SQLdiag は使ったことがあまりなかったので少し情報をまとめてみたいと思います。

PSSDIAG / SQLdiag については以下の記事が参考になります。

SQL パフォーマンス チューニング 中上級編 vol. 3 SQLDiag / SQL Nexus ツールの利用 (前編)
SQL パフォーマンス チューニング 中上級編 vol. 3 SQLDiag / SQL Nexus ツールの利用 (後編)
チューニングの基本は適切な情報収集から/マイクロソフト平山理氏に訊くDBチューニングの勘所

■PSSDIAG / SQLDiag の実行


PSSDIAG は PSSDIAG Data Collection Utility からダウンロードをすることができるツールとなります。
ただし、こちらからダウンロードできるファイルは SQL Server 2000 までのものになりますので今はあまり使用することはないかと思います。

インストールはダウンロードした [setup.exe ]を実行することで開始されます。
MSXML 4.0 Service Pack 2 (Microsoft XML Core Services) をインストールしていないと、[PSSDIAG Failed to instantiate an XML DOM] というメッセージがログに出力されどうしませんので気を付けておいたほうがよさそうですね。

現在のバージョンで使用するためには CodePlex からダウンロードできる Pssdiag and Sqldiag Manager を使用することになるかと思います。
# SQLDiag は SQL Server をインストールした際に共通ツールとしてインストールされています。上記のツールは SQLDiag で使用する構成ファイルを作成するための支援ツールとなります。

CodePlex からインストーラーをダウンロードしてインストールすると、Pssdiag Configuration Manager を実行することができるようになります。
このツールを使用すると SQL Server 2005 以降で使用することができる SQLDiag の構成ファイルを作成することができるようになります。

ツールの使い方については Step by Step tasks に書かれていますが使用方法の流れについてみていきたいと思います。
CodePlex で提供されているものは SQL Server 2008 R2 までとなっていますが、SQL Server 2008 R2ようのものを SQL Server 2012 で使用する高尾tができます。

  1. Pssdiag Configuration Manager を起動します。
  2. 情報を取得する SQL Server のバージョンやインスタンス名等を設定して [Save] をクリックします。
    image
  3. ファイルの作成先が出力されますので設定して [OK] をクリックします。
    image
    デフォルトですと、[C:Program Files (x86)MicrosoftPssdiag] 配下の [Build] [Customer] にファイルが保存されます。
  4. SQL Server 2008 を選択した場合は R2 なのか無印なのかを選択するダイアログが表示されますのでどちらを使用するか設定します。
    image

以上でツールの実行は完了です。

このツールは SQLDiag を実行するための構成ファイル / バッチファイルを作成するものになります。
[C:Program Files (x86)MicrosoftPssdiagCustomer] に [pssd.cab] に作成された cab を解凍するか、build のフォルダのファイル群を使用することになります。

Pssdiag and Sqldiag Manager は PSSDiag / SQLDiag で使用するための構成ファイルを作るツールというイメージでしょうか。

今回は SQL Server 2012 を使用しているのですが [build] または解凍したファイルの [pssdiag.cmd] をそのまま実行すると [SQLDIAG . Function result: 87. Message: パラメーターが間違っています。] というメッセージが表示され実行できないと思います。

image

投稿を書いている時点では、CodePlex から提供されているツールは SQL Server のバージョンが SQL Server 2008 R2 までとなっていますので SQL Server 2012 で実行するためには SQLDiag のパスと構成ファイルを少し変更する必要があります。

まずは pssdiag.cmd を変更します。
このファイルには以下のような記述がされています。

if "%toolsbin%"=="" set toolsbin=C:Program FilesMicrosoft SQL Server100ToolsBinn

このパスは SQL Server 2008 / R2 用のものになりますので、SQL Server 2012 のパスが使われるように変更します。

 

この後に構成ファイルのバージョン情報を変更します。
フォルダの中に [PSSDiag.xml] がありますので、これをテキストエディタで開き、

set toolsbin=C:Program FilesMicrosoft SQL Server110ToolsBinn
<Instance name="SQL2012" windowsauth="true" ssver="10.50" user="">

となっている [ssver] を

<Instance name="SQL2012" windowsauth="true" ssver="*" user="">

 

に変更します。

そうすると SQLDiag が実行できるようになります。

以下のメッセージに関しては無視しています。
# [for /F "tokens=1,2 delims==~"  %%i IN (‘diagutil.exe’) ] の箇所をコメント化すると出力されないようにできます。
image

データに関しては初期設定ですとバッチを実行したフォルダ内の [output] フォルダに作成されます。
デフォルトトレースは取得されていなかったようので、これに関しては ERORLOG ディレクトリから取得いてもよいかもしれないですね。

SQDiag はサービスとしても登録することができますので、詳細については SQLdiag ユーティリティ を見るとよいかと思います。

Creating Custom Collectors に紹介されているようにカスタムのタスクを追加することもできますので、不足している情報があれば追加することも可能です。

私も診断用のクエリ群は持っているのですが、ツール化はしていないので SQLDiag にカスタムコレクターとして組み込んでしまってもよいのかもしれないですね。

Share

Written by Masayuki.Ozawa

4月 1st, 2013 at 11:03 am

Posted in SQL Server

Tagged with

Leave a Reply