Sdílet prostřednictvím


Přístup k diagnostickým informacím nativního klienta SQL Serveru v protokolu rozšířených událostí

platí pro:SQL ServerAzure SQL Databaseazure SQL Managed InstanceAzure Synapse AnalyticsPlatform Platform System (PDW)

Důležitý

SQL Server Native Client (SNAC) není dodáván s:

  • SQL Server 2022 (16.x) a novější verze
  • SQL Server Management Studio 19 a novější verze

Pro vývoj nových aplikací se nedoporučuje nativní klient SQL Serveru (SQLNCLI nebo SQLNCLI11) a starší zprostředkovatel Microsoft OLE DB pro SQL Server (SQLOLEDB).

Pro nové projekty použijte jeden z následujících ovladačů:

Informace o SQLNCLI, které se dodává jako součást databázového stroje SQL Serveru (verze 2012 až 2019), naleznete v tomto support lifecycle exception.

Počínaje SQL Serverem 2012 (11.x) se aktualizovalo trasování přístupu nativního klienta a dat SQL Serveru (trasování přístupu k datům), aby bylo snazší získat diagnostické informace o chybách připojení z vyrovnávací paměti okruhu připojení a informací o výkonu aplikace z protokolu rozšířených událostí.

Informace o čtení protokolu rozšířených událostí naleznete v tématu Zobrazení dat relace událostí.

Poznámka

Tato funkce je určená pouze pro účely řešení potíží a diagnostiky a nemusí být vhodná pro účely auditování nebo zabezpečení.

Poznámky

V případě operací připojení odešle nativní klient SQL Serveru ID připojení klienta. Pokud připojení selže, můžete získat přístup k vyrovnávací paměti okruhu připojení (řešení potíží s připojením v SYSTÉMU SQL Server 2008 s vyrovnávací pamětí okruhu připojení) a najít ClientConnectionID pole a získat diagnostické informace o selhání připojení. ID připojení klienta se protokolují do vyrovnávací paměti okruhu pouze v případě, že dojde k chybě. (Pokud se připojení nezdaří před odesláním paketu preloginu, ID připojení klienta se nevygeneruje.) ID připojení klienta je identifikátor GUID 16 bajtů. ID připojení klienta můžete také najít ve výstupním cíli rozšířených událostí, pokud se akce client_connection_id přidá do událostí v relaci rozšířených událostí. Můžete povolit trasování přístupu k datům a znovu spustit příkaz připojení a sledovat ClientConnectionID pole v trasování přístupu k datům pro neúspěšnou operaci, pokud potřebujete další diagnostickou pomoc.

Pokud používáte rozhraní ODBC v nativním klientovi SQL Serveru a připojení proběhne úspěšně, můžete id připojení klienta získat pomocí atributu SQL_COPT_SS_CLIENT_CONNECTION_ID s SQLGetConnectAttr.

Nativní klient SQL Serveru také odesílá ID aktivity specifické pro vlákno. ID aktivity se zaznamenává v relacích rozšířených událostí, pokud jsou relace spuštěny s povolenou možností TRACK_CAUSALITY. V případě problémů s výkonem aktivního připojení můžete id aktivity získat z trasování přístupu k datům klienta (ID aktivity pole) a pak ve výstupu rozšířených událostí vyhledat ID aktivity. ID aktivity v rozšířených událostech je identifikátor GUID 16 bajtů (ne stejný jako IDENTIFIKÁTOR GUID pro ID připojení klienta) připojený se čtyřbajtů pořadového čísla. Pořadové číslo představuje pořadí požadavku v rámci vlákna a označuje relativní pořadí dávkových příkazů a příkazů RPC pro vlákno. ID aktivity se volitelně odešle pro dávkové příkazy SQL a požadavky RPC, pokud je zapnuté trasování přístupu k datům a 18. bit v konfiguračním slově trasování přístupu k datům je zapnuté.

Následuje ukázka, která používá Transact-SQL ke spuštění relace rozšířených událostí, která se uloží do vyrovnávací paměti okruhu, a zaznamená ID aktivity odeslané z klienta v operacích RPC a batch.

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)  
  

Řídicí soubor

V SYSTÉMU SQL Server 2012 (11.x) je obsah souboru ovládacího prvku nativního klienta SQL Serveru (ctrl.guid.snac11) následující:

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

Soubor MOF

V SQL Serveru 2012 (11.x) je obsah souboru MOF nativního klienta SQL Serveru:

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

Viz také

zpracování chyb a zpráv