Přístup k diagnostickým informacím v protokolu rozšířených událostí
platí pro:SQL ServerAzure SQL Databaseazure SQL Managed InstanceAzure Synapse AnalyticsPlatform Platform System (PDW)
Od verze SQL Server 2012 (11.x), ovladače OLE DB pro SQL Server a trasování přístupu k datům (Trasování přístupu k datům) byly aktualizovány, 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 ovladač OLE DB pro SQL Server 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ěti 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.
Ovladač OLE DB pro SQL Server 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
Obsah řídicího souboru OLE DB pro řídicí soubor SYSTÉMU SQL Server (ctrl.guid) je:
{8B98D3F2-3CC6-0B9C-6651-9649CCE5C752} 0x630ff 0 MSDADIAG.ETW
{EE7FB59C-D3E8-9684-AEAC-B214EFD91B31} 0x630ff 0 MSOLEDBSQL.1
Soubor MOF
Obsah souboru MOF ovladače OLE DB pro SQL Server je:
#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;
};