Freigeben über


Zugreifen auf Diagnoseinformationen im Protokoll der erweiterten Ereignisse

Gilt für:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-Datenbank in Microsoft Fabric

OLE DB-Treiber herunterladen

Ab SQL Server 2012 (11.x) wurden der OLE DB-Treiber für SQL Server und die Datenzugriffs-Ablaufverfolgung (Datenzugriffs-Ablaufverfolgung) aktualisiert, um das Abrufen von Diagnoseinformationen über Verbindungsfehler vom Verbindungsringpuffer sowie von Informationen zur Anwendungsleistung aus dem Protokoll für erweiterte Ereignisse zu erleichtern.

Informationen zum Lesen des Protokolls für erweiterte Ereignisse finden Sie unter Anzeigen von Ereignisdaten in SQL Server Management Studio.

Hinweis

Dieses Feature ist nur für Problembehandlungs- und Diagnosezwecke vorgesehen und eignet sich möglicherweise nicht für Überwachungs- oder Sicherheitszwecke.

Bemerkungen

Bei Verbindungsvorgängen sendet OLE DB-Treiber für SQL Server eine Clientverbindungs-ID. Wenn die Verbindung fehlschlägt, können Sie auf den Verbindungsringpuffer zugreifen (Konnektivitätsproblembehandlung in SQL Server 2008 mit dem Verbindungsringpuffer und Suchen des ClientConnectionID Felds und Abrufen von Diagnoseinformationen zum Verbindungsausfall. Clientverbindungs-IDs werden nur im Ringpuffer protokolliert, wenn ein Fehler auftritt. (Wenn vor dem Senden des prelogin-Pakets keine Verbindung hergestellt werden kann, wird keine Clientverbindungs-ID generiert.) Die Clientverbindungs-ID ist eine 16-Byte-GUID. Sie können auch die Clientverbindungs-ID im erweiterten Ereignisse-Ausgabeziel suchen, wenn Ereignissen in einer Sitzung für erweiterte Ereignisse die client_connection_id -Aktion hinzugefügt wird. Sie können die Datenzugriffs-Ablaufverfolgung aktivieren, den Verbindungsbefehl erneut ausführen und das ClientConnectionID -Feld in der Datenzugriffs-Ablaufverfolgung für einen fehlgeschlagenen Vorgang beobachten, wenn Sie weitere Hilfe bei der Diagnose benötigen.

Der OLE DB-Treiber für SQL Server sendet außerdem eine threadspezifische Aktivitäts-ID. Die Aktivitäts-ID wird in den erweiterten Ereignissitzungen erfasst, wenn die Sitzungen mit der aktivierten option TRACK_CAUSALITY gestartet werden. Bei Leistungsproblemen mit einer aktiven Verbindung können Sie die Aktivitäts-ID aus der Datenzugriffs-Ablaufverfolgung des Clients abrufen (ActivityID -Feld) und dann die Aktivitäts-ID in der Ausgabe für die erweiterten Ereignisse suchen. Die Aktivitäts-ID in den erweiterten Ereignissen ist eine 16-Byte-GUID (nicht identisch mit der GUID für die Clientverbindungs-ID), die mit einer 4-Byte-Sequenznummer angefügt wird. Die Sequenznummer steht für die Reihenfolge einer Anforderung innerhalb eines Threads und gibt die relative Reihenfolge des Batches und der RPC-Anweisungen für den Thread an. Die ActivityID wird optional für SQL-Batchanweisungen und RPC-Anforderungen gesendet, wenn die Datenzugriffsablaufverfolgung aktiviert ist und das 18. Bit im Konfigurationswort für die Datenzugriffsablaufverfolgung aktiviert ONist.

Im folgenden Beispiel wird Transact-SQL zum Starten einer Sitzung für erweiterte Ereignisse verwendet, die in einem Ringpuffer gespeichert werden und die von einem Client in RPC- und Batch-Vorgängen gesendete Aktivitäts-ID aufzeichnen.

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)

Steuerelementdatei

Die Steuerungsdatei (ctrl.guid) des OLE DB-Treibers für SQL Server:

{8B98D3F2-3CC6-0B9C-6651-9649CCE5C752}  0x630ff  0   MSDADIAG.ETW
{EE7FB59C-D3E8-9684-AEAC-B214EFD91B31}  0x630ff  0   MSOLEDBSQL.1

MOF-Datei

Der Inhalt des OLE DB-Treibers für DIE SQL Server-Datei mof lautet:

#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;    
};    

/////////////////////////////////////////////////////////////////////////////    
//    
//  MSOLEDBSQL.1    

[    
 dynamic: ToInstance,    
 Description("MSOLEDBSQL.1"),    
 Guid("{EE7FB59C-D3E8-9684-AEAC-B214EFD91B31}"),    
 locale("MS\\0x409")    
]    
class Bid2Etw_MSOLEDBSQL_1 : EventTrace    
{    
};    

[    
 dynamic: ToInstance,    
 Description("MSOLEDBSQL.1"),    
 Guid("{EE7FB59D-D3E8-9684-AEAC-B214EFD91B31}"),    
 DisplayName("MSOLEDBSQL.1"),    
 locale("MS\\0x409")    
]    
class Bid2Etw_MSOLEDBSQL_1_Trace : Bid2Etw_MSOLEDBSQL_1    
{    
};    

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

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

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

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