次の方法で共有


拡張イベント ログの診断情報へのアクセス

SQL Server 2012 以降では、SQL Server Native Client とデータ アクセスのトレース (データ アクセスのトレース) が更新され、接続リング バッファーからの接続エラーに関する診断情報と拡張イベント ログからのアプリケーションのパフォーマンス情報を簡単に取得できるようになりました。

拡張イベント ログの読み取りの詳細については、「イベント セッション データの表示」を参照してください。

注意

この機能は、トラブルシューティングおよび診断用であるため、監査やセキュリティの用途には適さない場合があります。

解説

接続操作では、SQL Server Native Client はクライアント接続 ID を送信します。 接続に失敗した場合は、接続リング バッファー (「接続リング バッファーを使用した SQL Server 2008 の接続に関するトラブルシューティング」) にアクセスし、ClientConnectionID フィールドを検索して接続エラーに関する診断情報を取得することができます。 クライアント接続 ID は、エラーが発生した場合にのみリング バッファーに記録されます (ログイン前のパケットを送信する前に接続に失敗した場合、クライアント接続 ID は生成されません)。クライアント接続 ID は 16 バイトの GUID です。 また、client_connection_id 操作を拡張イベント セッションのイベントに追加すると、拡張イベントの出力先でクライアント接続 ID を検索することもできます。 詳しい診断サポートが必要な場合は、データ アクセスのトレースを有効にして、接続コマンドを再実行し、失敗した操作のデータ アクセスのトレースで ClientConnectionID フィールドを調べます。

SQL Server Native Client で ODBC を使用し、接続に成功した場合は、SQLGetConnectAttr で SQL_COPT_SS_CLIENT_CONNECTION_ID 属性を使用すると、クライアント接続 ID を取得できます。

SQL Server Native Client は、スレッド固有のアクティビティ ID も送信します。 アクティビティ ID は、TRACK_CAUSAILITY オプションを有効にしてセッションを開始した場合、拡張イベント セッションでキャプチャされます。 アクティブな接続に関するパフォーマンスの問題については、クライアントのデータ アクセスのトレース (ActivityID フィールド) からアクティビティ ID を取得し、拡張イベント出力で、このアクティビティ ID を検索できます。 拡張イベントのアクティビティ ID は、16 バイトの GUID (クライアント接続 ID の GUID とは異なります) に 4 バイトのシーケンス番号が付加されたものです。 シーケンス番号は、スレッド内の要求の順序を表し、スレッドのバッチ ステートメントと RPC ステートメントの相対順序を示します。 ActivityID は必要に応じて、データ アクセスのトレースが有効であり、データ アクセス トレース構成ワードの 18 番目のビットがオンである場合に、SQL バッチ ステートメントと RPC 要求に送信されます。

次のサンプルでは、Transact-SQL を使用して拡張イベント セッションを開始します。このセッションは、リング バッファーに保存され、RPC およびバッチ操作でクライアントから送信されたアクティビティ ID を記録します。

create event session MySession on server 
add event connectivity_ring_buffer_recorded, 
add event sql_statement_starting (action (client_connection_id)), 
add event sql_statement_completed (action (client_connection_id)), 
add event rpc_starting (action (client_connection_id)), 
add event rpc_completed (action (client_connection_id))
add target ring_buffer with (track_causality=on)

制御ファイル

SQL Server 2012 の SQL Server Native Client 制御ファイル (ctrl.guid.snac11) の内容は次のとおりです。

{8B98D3F2-3CC6-0B9C-6651-9649CCE5C752}  0x00000000  0   MSDADIAG.ETW
{2DA81B52-908E-7DB6-EF81-76856BB47C4F}  0xFFFFFFFF  0   SQLNCLI11.1

MOF ファイル

SQL Server 2012 の SQL Server Native Client MOF ファイルの内容は次のとおりです。

#pragma classflags("forceupdate")
#pragma namespace ("\\\\.\\Root\\WMI")

/////////////////////////////////////////////////////////////////////////////
//
//  MSDADIAG.ETW

[
 dynamic: ToInstance,
 Description("MSDADIAG.ETW"),
 Guid("{8B98D3F2-3CC6-0B9C-6651-9649CCE5C752}"),
 locale("MS\\0x409")
]
class Bid2Etw_MSDADIAG_ETW : EventTrace
{
};

[
 dynamic: ToInstance,
 Description("MSDADIAG.ETW"),
 Guid("{8B98D3F3-3CC6-0B9C-6651-9649CCE5C752}"),
 DisplayName("msdadiag"),
 locale("MS\\0x409")
]
class Bid2Etw_MSDADIAG_ETW_Trace : Bid2Etw_MSDADIAG_ETW
{
};

[
 dynamic: ToInstance,
 Description("MSDADIAG.ETW formatted output (A)"),
 EventType(17),
 EventTypeName("TextA"),
 locale("MS\\0x409")
]
class Bid2Etw_MSDADIAG_ETW_Trace_TextA : Bid2Etw_MSDADIAG_ETW_Trace
{
    [
     WmiDataId(1),
     Description("Module ID"),
     read
    ]
    uint32 ModID;

    [
     WmiDataId(2),
     Description("Text StringA"),
     extension("RString"),
     read
    ]
    object msgStr;
};

[
 dynamic: ToInstance,
 Description("MSDADIAG.ETW formatted output (W)"),
 EventType(18),
 EventTypeName("TextW"),
 locale("MS\\0x409")
]
class Bid2Etw_MSDADIAG_ETW_Trace_TextW : Bid2Etw_MSDADIAG_ETW_Trace
{
    [
     WmiDataId(1),
     Description("Module ID"),
     read
    ]
    uint32 ModID;

    [
     WmiDataId(2),
     Description("Text StringW"),
     extension("RWString"),
     read
    ]
    object msgStr;
};


/////////////////////////////////////////////////////////////////////////////
//
//  SQLNCLI11.1

[
 dynamic: ToInstance,
 Description("SQLNCLI11.1"),
 Guid("{2DA81B52-908E-7DB6-EF81-76856BB47C4F}"),
 locale("MS\\0x409")
]
class Bid2Etw_SQLNCLI11_1 : EventTrace
{
};

[
 dynamic: ToInstance,
 Description("SQLNCLI11.1"),
 Guid("{2DA81B53-908E-7DB6-EF81-76856BB47C4F}"),
 DisplayName("SQLNCLI11.1"),
 locale("MS\\0x409")
]
class Bid2Etw_SQLNCLI11_1_Trace : Bid2Etw_SQLNCLI11_1
{
};

[
 dynamic: ToInstance,
 Description("SQLNCLI11.1 formatted output (A)"),
 EventType(17),
 EventTypeName("TextA"),
 locale("MS\\0x409")
]
class Bid2Etw_SQLNCLI11_1_Trace_TextA : Bid2Etw_SQLNCLI11_1_Trace
{
    [
     WmiDataId(1),
     Description("Module ID"),
     read
    ]
    uint32 ModID;

    [
     WmiDataId(2),
     Description("Text StringA"),
     extension("RString"),
     read
    ]
    object msgStr;
};

[
 dynamic: ToInstance,
 Description("SQLNCLI11.1 formatted output (W)"),
 EventType(18),
 EventTypeName("TextW"),
 locale("MS\\0x409")
]
class Bid2Etw_SQLNCLI11_1_Trace_TextW : Bid2Etw_SQLNCLI11_1_Trace
{
    [
     WmiDataId(1),
     Description("Module ID"),
     read
    ]
    uint32 ModID;

    [
     WmiDataId(2),
     Description("Text StringW"),
     extension("RWString"),
     read
    ]
    object msgStr;
};

関連項目

概念

エラーとメッセージの処理