Dela via


Åtkomst till SQL Server-intern klientdiagnostikinformation i loggen för utökade händelser

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Viktig

SQL Server Native Client (SNAC) levereras inte med:

  • SQL Server 2022 (16.x) och senare versioner
  • SQL Server Management Studio 19 och senare versioner

SQL Server Native Client (SQLNCLI eller SQLNCLI11) och den äldre Microsoft OLE DB-providern för SQL Server (SQLOLEDB) rekommenderas inte för ny programutveckling.

Använd någon av följande faktorer för nya projekt:

För SQLNCLI som levereras som en komponent i SQL Server Database Engine (version 2012 till och med 2019), se det här Support Lifecycle exception.

Från och med SQL Server 2012 (11.x) har SQL Server Native Client och dataåtkomstspårning (Data Access Tracing) uppdaterats för att göra det enklare att få diagnostikinformation om anslutningsfel från anslutningsringsbufferten och programprestandainformationen från loggen för utökade händelser.

Information om hur du läser loggen för utökade händelser finns i Visa händelsesessionsdata.

Not

Den här funktionen är endast avsedd för felsökning och diagnostik och kanske inte är lämplig för granskning eller säkerhetsändamål.

Anmärkningar

För anslutningsåtgärder skickar den interna SQL Server-klienten ett klientanslutnings-ID. Om anslutningen misslyckas kan du komma åt anslutningsringsbufferten (Anslutningsfelsökning i SQL Server 2008 med anslutningsringsbufferten) och hitta fältet ClientConnectionID och hämta diagnostikinformation om anslutningsfelet. Klientanslutnings-ID:t loggas endast i ringbufferten om ett fel inträffar. (Om en anslutning misslyckas innan preloginpaketet skickas genereras inte något klientanslutnings-ID.) Klientanslutnings-ID:t är ett GUID på 16 byte. Du kan också hitta klientanslutnings-ID:t i utdatamålet för utökade händelser om åtgärden client_connection_id läggs till i händelser i en utökad händelsesession. Du kan aktivera spårning av dataåtkomst och köra anslutningskommandot igen och observera fältet ClientConnectionID i dataåtkomstspårningen för en misslyckad åtgärd, om du behöver ytterligare diagnostisk hjälp.

Om du använder ODBC i SQL Server Native Client och en anslutning lyckas kan du hämta klientanslutnings-ID:t med hjälp av attributet SQL_COPT_SS_CLIENT_CONNECTION_ID med SQLGetConnectAttr.

SQL Server Native Client skickar också ett trådspecifikt aktivitets-ID. Aktivitets-ID:t registreras i de utökade händelsesessionerna om sessionerna startas med alternativet TRACK_CAUSALITY aktiverat. För prestandaproblem med en aktiv anslutning kan du hämta aktivitets-ID:t från klientens dataåtkomstspårning (ActivityID- fält) och sedan hitta aktivitets-ID:t i utdata för utökade händelser. Aktivitets-ID:t i de utökade händelserna är ett GUID på 16 byte (inte samma som GUID för klientanslutnings-ID:t) som läggs till med ett sekvensnummer på fyra byte. Sekvensnumret representerar ordningen på en begäran i en tråd och anger den relativa ordningen för batch- och RPC-instruktioner för tråden. Det ActivityID- kan också skickas för SQL-batchinstruktioner och RPC-begäranden när spårning av dataåtkomst är aktiverat och den 18:e biten i konfigurationsordet för spårning av dataåtkomst är aktiverat.

Följande är ett exempel som använder Transact-SQL för att starta en utökad händelsesession som lagras i en ringbuffert och registrerar aktivitets-ID:t som skickas från en klient i RPC- och batchåtgärder.

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)  
  

Kontrollfil

I SQL Server 2012 (11.x) är innehållet i den interna SQL Server-klientkontrollfilen (ctrl.guid.snac11) :

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

MOF-fil

I SQL Server 2012 (11.x) är innehållet i den interna SQL Server-klientens mof-fil:

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

Se även

hantering av fel och meddelanden