PSSDIAG データ収集ユーティリティ

適用先
SQL Server

概要

PSSDIAG は、Microsoft 製品サポート サービスがさまざまなログやデータ ファイルを収集するために使用する汎用の診断収集ユーティリティです。 PSSDIAG は、パフォーマンス モニター ログ、SQL Profiler トレース、SQL Server ブロック スクリプト出力、Windows イベント ログ、および SQLDIAG 出力をネイティブに収集できます。 データ収集は、これらのログ タイプのいずれかを有効または無効にするか、ブロッキング スクリプトとパフォーマンス モニター ログのサンプル間隔を変更し、SQL プロファイラーとパフォーマンス モニターがキャプチャする特定のイベントとカウンターを変更することでカスタマイズできます。 PSSDIAG では、ネイティブでサポートされている診断の種類以外のデータを必要とするサポート ケースに対して、カスタム ユーティリティまたはカスタム Transact-SQL スクリプトを実行することもできます。

追加情報

このドキュメントは、サポート ケースのトラブルシューティングを支援するためにマイクロソフト カスタマー サポート サービスから送信される PSSDIAG のバージョンに適用されます。 ツールの少し異なるバージョンが一般ダウンロードできます。 ツールの一般ダウンロード バージョンについて説明しているドキュメントについては、次の MSDN (Microsoft Developer Network) Web サイトを参照してください。

https://msdn2.microsoft.com/library/aa175399(sql.80).aspx
Microsoft SQL Server 2005 以降のバージョンについては、次の codeplex サイトにある Pssdiag および Sqldiag マネージャーを使用します。

https://diagmanager.codeplex.com/
詳細については、次の MSDN Web サイトを参照してください。

https://blogs.msdn.com/b/psssql/archive/2011/05/24/pssdiag-sqldiag-configuration-manager-released-to-codeplex.aspx
マイクロソフトのサポート ファイルをダウンロードする方法の詳細については、以下のサポート技術情報番号をクリックしてください。

119591 Microsoft サポート ファイルを入手する方法 オンライン サービス マイクロソフトがこのファイルのウイルス スキャンを行った場合。 配布ファイルはセキュリティで保護されたサーバー上に置かれており、権限のない第三者が無断でファイルを変更できないようになっています。 配布ファイルはセキュリティで保護されたサーバー上に置かれており、権限のない第三者が無断でファイルを変更できないようになっています。

PSSDIAG を起動する方法

PSSDIAG は、コンピューター上に作成した C:\PSSDIAG フォルダーに展開されます。 このフォルダーは、PSSDIAG がキャプチャするように構成されているデータとログ ファイルを保持するのに十分なディスク領域があるドライブ上にある必要があります。 PSSDIAG はさまざまな種類のログを収集するように構成できるため、必要な空きディスク領域は、1 MB から 2 MB から数ギガバイトまでさまざまです。 収集されるトレース データの量は、サーバーが処理しているワークロードの性質と量によって異なる場合があることに注意してください。 したがって、正確な推定ができない場合があります。 SQL プロファイラーのトレースなど、大量のトレースの種類を伴うデータ収集の場合は、PSSDIAG がネットワーク共有やマップされたネットワーク ドライブからではなく、ローカル ドライブから実行されていることを確認します。

通常、PSSDIAG は、監視対象のサーバー上でローカルで実行します。 ただし、リモート サーバーを監視するように PSSDIAG を構成することはできます。 PSSDIAG をリモートで実行する方法の詳細については、この資料の「PSSDIAG をリモートまたはクラスター化された SQL Server で実行する」を参照してください。 PSSDIAG をリモートで実行することは、収集およびトレースされたデータがネットワークを介してリモート コンピューターに送信されることを意味します。 これにより、データが書き込まれるリモート システムのネットワーク帯域幅と速度、I/O と処理能力によっては、SQL Server のパフォーマンスに中から重大な影響が生じる可能性があります。

注: SQL Server のクラスター化されたインスタンスからデータを収集している場合は、追加の手順を実行する必要がある場合があります。 PSSDIAG がサーバー上でローカルに実行される場合でも、SQL Server のクラスター化されたインスタンスに接続する場合は、この資料の「PSSDIAG をリモートまたはクラスター化されたSQL Serverで実行する方法」セクションを必ずお読みください。

Pssdiag.exe には、重要な固有のセキュリティ要件はありません。 ただし、必要に応じて PSSDIAG がキャプチャするように構成できる診断の多くには、Microsoft Windows NT 管理者の資格情報が必要です。 また、PSSDIAG が SQL Server から診断をキャプチャする場合は (つまり、PSSDIAG が /G コマンド ライン スイッチを使用して "汎用" モードで実行されていない場合)、SQL Server の sysadmin 資格情報が必要です。 既定では、PSSDIAG は Windows 認証で SQL Server への接続を確立しますが、必要に応じて SQL Server 認証を使用できます。

PSSDIAG では、いくつかのオプションのコマンド ライン パラメーターがサポートされています。 オプションのコマンド ライン パラメーターの詳細については、「PSSDIAG コマンド ライン パラメーター」セクションを参照してください。 ただし、通常、オプション パラメーターを使用する必要はありません。 Microsoft ダウンロード センター上のパッケージから PSSDIAG ファイルを抽出したら、Pssdiag.exe を実行してデータ収集を開始します。

PSSDIAG が起動すると、最初に開き、キャプチャするように構成されているログ ファイルが構成されます。 この処理には数秒かかる場合があります。 PSSDIAG が完全に開始され、すべてのログがアクティブになると、次のメッセージがコンソールに出力されます。

2003/10/02 12:30:14.90 PSSDIAG Collection started. Ctrl+C を押して停止します。

PSSDIAG を実行して、自由に再現できる問題に関するデータを収集している場合は、メッセージが表示されるまで待ってから、問題の再現を試みます。

データ収集が完了して PSSDIAG がシャットダウンされるまでは、PSSDIAG が実行されているコンソール セッションからログアウトしないでください。 PSSDIAG はサービスではなくコンソール ユーティリティであるため、PSSDIAG が実行されているセッションからログアウトすると、ユーティリティがシャットダウンされ、データ収集が終了します。 必要に応じて、ターミナル サーバー セッションから PSSDIAG を実行できます。また、ログアウトする代わりにセッションを切断して PSSDIAG を実行したままにしておくこともできます。

PSSDIAG を停止する方法

PSSDIAG を停止するには、PSSDIAG が実行されているコンソール ウィンドウで CTRL+C キーを押します。 また、ある時点で自動的にシャットダウンするように PSSDIAG に指示することもできます。 詳細については、「PSSDIAG を自動的に開始および停止する」を参照してください。 PSSDIAG が圧縮された .cab ファイルにファイルを自動的に追加している場合、PSSDIAG が最終的なログ ファイルの圧縮を完了するまでにかなりの時間がかかることがあります。 Ctrl + C キーを押すと、PSSDIAG は次のようなメッセージをコンソールに送信します。

注

2003/10/02 12:24:00.69 PSSDIAG データ収集の終了。 プロセスがシャットダウンしてファイルが圧縮されるまで待ちます (これには数分かかる場合があります)

            
このメッセージが表示されると、PSSDIAG は以前に収集したデータの圧縮を続ける可能性がありますが、サーバーから追加のデータを収集しなくなりました。

PSSDIAG が完全にシャットダウンする前に、次のようなメッセージが表示される場合があります。

注

F:\pssdiag\output\ のファイルが PSSDIAG.CAB に追加されました。 F:\pssdiag\output\backup\? でバックアップを削除します。

            
可能であれば、収集したデータ ファイルをバックアップ フォルダーに保持するには、Pssdiag.cab 出力ファイルが損傷していないことを確認するまで、"N" に答えることをお勧めします。

PSSDIAG 出力の場所

/O コマンド ライン パラメーターを使用してカスタム出力フォルダーを指定しない限り、PSSDIAG は実行されるフォルダーに Output という名前のフォルダーを作成します。 /C0 (既定) または /C1 コマンド ライン パラメーターを指定して PSSDIAG を実行して自動圧縮を無効にする場合、出力ファイルはこのフォルダーに残ります。 フォルダーを Microsoft サポート担当者にアップロードする必要がある場合は、選択したツールを使用して出力フォルダーを圧縮することをお勧めします。

PSSDIAG が自動圧縮モードで動作している場合、すべての出力ファイルが出力フォルダー内の圧縮された Pssdiag.cab ファイルに追加されます。 既定では、PSSDIAG は圧縮を実行しません。 ファイルが Pssdiag.cab ファイルに正常に追加されると、「バックアップ」という名前の別のフォルダーに移動されます。 Backup フォルダーが Output フォルダーに作成されます。 1 つの CAB ファイルに追加できる非圧縮データの最大量は 2 ギガバイト (GB) であることに注意してください。 収集したデータが 2 GB を超える場合は、Pssdiag2.cab、Pssdiag3.cab などの名前の追加 CAB ファイルが作成されます。

PSSDIAG の削除

PSSDIAG は、COM オブジェクトの登録、システム ディレクトリへのファイルのコピー、システム レジストリの変更を行いません。 データ収集の完了後に PSSDIAG を削除するには、PSSDIAG ファイルを含むフォルダーを削除します。 PSSDIAG では、いくつかのシステム ストアド プロシージャがマスター データベースにインストールされます。 これらのストアド プロシージャは、PSSDIAG がシャットダウンすると自動的に削除されます。

PSSDIAG コマンド ライン パラメーター

PSSDIAG /? を実行できますか? PSSDIAG がサポートするコマンド ライン パラメーターの一覧を表示します。 次の表で最も頻繁に使用されるパラメーターを示します。 これらのコマンド ライン パラメーターはすべて省略可能です。

パラメーター 説明
/Q Quiet モード。 バックアップ ファイルを削除するように求めるメッセージなど、ユーザーの操作を必要とするメッセージを抑制します。
/C# /C0 は自動圧縮を無効にし、/C1 は OUTPUT ディレクトリ内のファイルの NTFS 圧縮を有効にします。 /C0 (非圧縮) が既定値です。
/B YYYYMMDD_HH:MM:SS コレクションを開始する将来の開始時刻を指定します。 PSSDIAG は、この時間に達するまでアイドル状態のままになります。 日時は、ここで指定されている正確なフォームで入力する必要があります。 日付と時刻は、一緒に指定することも、別々に指定することもできます。 たとえば、時刻のみまたは日付のみを指定できます。
/E YYYYMMDD_HH:MM:SS 自動シャットダウン時刻を指定します。 この時間に達すると、PSSDIAG は自動的にデータ収集を停止し、自動的にシャットダウンします。 日付と時刻は、一緒に指定することも、別々に指定することもできます。 たとえば、時刻のみまたは日付のみを指定できます。
/G 汎用モード。 PSSDIAG の既定値は、実行中の SQL Server インスタンスを必要とする SQL Server 中心のデータ収集モードです。 /G パラメーターを指定すると、SQL Server 固有のデータ収集が無効になるため、PSSDIAG を他のシナリオでも使用できます。

PSSDIAG の自動開始と停止

場合によっては、PSSDIAG が指定した時刻に自動的にデータ収集を開始したり、指定した時間にデータを収集した後に自動的に停止させたりすると便利な場合があります。 たとえば、一貫して午前 2:00 に出現する問題のトラブルシューティングを行う場合があります。 このような場合は、PSSDIAG が午前 1:00 にデータ収集を開始し、午前 3:00 に自動的にシャットダウンするようにすることができます。 指定した時刻にデータ収集を自動的に開始および停止する最も簡単な方法は、コマンドライン パラメーター /B と /E を使用することです。 これらのパラメーターには、「PSSDIAG コマンド ライン パラメーター」セクションで指定されている正確な日付形式を使用してください。 PSSDIAG が実行されているコンピューターのローカル時刻を基準にして時刻を指定する必要があります。

また、PSSDIAG は、ユーティリティの出力フォルダで Pssdiag.stop という名前のファイルが見つかるたびに自動的にシャットダウンします。 これは、何らかのイベントが発生した後にプログラムで PSSDIAG をシャットダウンする必要があるが、このイベントが発生する時刻が事前にわからない状況に役立ちます。 Pssdiag.stop ファイルの内容は関係ありません。 バッチ ファイルで次のようなコマンドを使用することもできます。


ECHO abc > F:\PSSDIAG\Output\PSSDIAG.STOP

PSSDIAG がパフォーマンスに与える影響

PSSDIAG は他のデータ収集 API やユーティリティのラッパーにすぎないため、PSSDIAG を実行した場合のパフォーマンスへの影響は、一般に、PSSDIAG がキャプチャするように構成されているトレースの影響と同じです。 PSSDIAG を使用せずに同じトレース データを手動でキャプチャした場合でも、パフォーマンスへの影響は同じです。

PSSDIAG は、少量のデータまたは大量のデータをキャプチャするように構成でき、キャプチャされるデータの種類は通常、インシデントごとにカスタマイズされます。 このため、収集されているログの種類とトレース イベントを考慮せずに、PSSDIAG の実行がもたらす可能性のある影響について一般的な記述を行うことはできません。 サーバーでのデータ収集の影響が心配な場合は、PSSDIAG を送信したサポート担当者に連絡して、キャプチャするように構成されている診断の種類を明確にしてください。

Pssdiag.exe が直接実行するタスクのうち、CPU リソースを大量に消費する可能性があるものの 1 つに、CAB アーカイブ内のデータ ファイルの自動圧縮があります。 既定では、この機能は無効になっています。 ただし、/C コマンド ライン パラメーターを使用して有効にすることができます。 /C コマンド ライン パラメーターの詳細については、「PSSDIAG コマンド ライン パラメーター」セクションを参照してください。

PSSDIAG をリモートでまたはクラスター化された SQL Server で実行する

PSSDIAG がリモート サーバーまたは SQL Server のクラスター化されたインスタンスからデータを収集するには、Pssdiag.ini ファイルを変更する必要があります。 PSSDIAG が接続するサーバーの名前を指定する必要があります。 PSSDIAG が送信される前にサーバー名を正しく構成できるように、サポート担当者にサーバー名を伝えます。

自分でこの変更を行う場合は、Pssdiag.exe と同じフォルダーで Pssdiag.ini ファイルを見つけます。 メモ帳で Pssdiag.ini を開きます。 ファイル内の最初の行には文字列 "[.]" が含まれています。 角かっこ内のピリオドをリモート サーバーの名前に置き換えます。 SQL Server の名前付きインスタンスからデータを収集している場合、サーバー名は SQL Server のインスタンスの完全な名前ではないことに注意してください。 たとえば、SQL Server のインスタンス名が "MYSERVER\MyInstance" の場合、Pssdiag.ini ファイルの最初の行を "[MYSERVER]" に置き換えます。

SQL プロファイラーのトレースは、常にサーバー上で実行されます。 このため、プロファイラー データを収集するように PSSDIAG が構成されている場合、PSSDIAG をリモートで実行するとさらに複雑になります。 このような場合は、PSSDIAG をサーバー上でローカルに実行することをお勧めします。 Profiler トレースが必要な場合にリモート データ収集のオプションを検討する場合は、サポート担当者に詳細をお問い合わせください。  繰り返しになりますが、この選択を行うと、SQL Server のパフォーマンスへの影響が明らかになります。

SQL Server のインスタンスがクラスター化されている場合は、クラスター ノードのコンピューター名の代わりに仮想サーバー名を使用します。

重要: PSSDIAG がいずれかのクラスター ノードでローカルに実行される場合でも、SQL Server のクラスター化されたインスタンスに接続するときは、常に Pssdiag.ini ファイルで仮想サーバー名を明示的に指定する必要があります。

PSSDiag ユーティリティは、もともと SQL Server 7.0 および SQL Server 2000 用に作成されました。 バージョンが作成され、SQL Server 2005 以降のビルドに含まれていました。 新しいバージョンは SQLDiag という名前で、SQL Server に含まれています。 SQLDiag の詳細については、「SQLDiag ユーティリティ」を参照してください。