Uzyskiwanie dostępu do informacji diagnostycznych w dzienniku zdarzeń rozszerzonych
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Począwszy od programu SQL Server 2012 (11.x), sterownik OLE DB dla programu SQL Server i śledzenie dostępu do danych (śledzenie dostępu do danych) zostały zaktualizowane, aby ułatwić uzyskiwanie informacji diagnostycznych na temat błędów połączeń z buforu pierścienia łączności i informacji o wydajności aplikacji z dziennika zdarzeń rozszerzonych.
Aby uzyskać informacje o odczytywaniu dziennika zdarzeń rozszerzonych, zobacz Wyświetl dane sesji zdarzeń.
Nuta
Ta funkcja jest przeznaczona tylko do rozwiązywania problemów i celów diagnostycznych i może nie być odpowiednia do celów inspekcji lub zabezpieczeń.
Uwagi
W przypadku operacji połączenia sterownik OLE DB dla programu SQL Server wyśle identyfikator połączenia klienta. Jeśli połączenie nie powiedzie się, możesz uzyskać dostęp do buforu pierścienia łączności (rozwiązywanie problemów z łącznością w programie SQL Server 2008 za pomocą buforu pierścienia łączności i znaleźć pole ClientConnectionID i uzyskać informacje diagnostyczne dotyczące błędu połączenia. Identyfikatory połączeń klienta są rejestrowane w buforze pierścienia tylko wtedy, gdy wystąpi błąd. (Jeśli połączenie nie powiedzie się przed wysłaniem pakietu przedlogin, identyfikator połączenia klienta nie zostanie wygenerowany). Identyfikator połączenia klienta to 16-bajtowy identyfikator GUID. Identyfikator połączenia klienta można również znaleźć w obiekcie docelowym danych wyjściowych zdarzeń rozszerzonych, jeśli akcja client_connection_id zostanie dodana do zdarzeń w sesji zdarzeń rozszerzonych. Możesz włączyć śledzenie dostępu do danych i ponownie uruchomić polecenie połączenia i obserwować ClientConnectionID pole w ślad dostępu do danych dla operacji zakończonej niepowodzeniem, jeśli potrzebujesz dalszej pomocy diagnostycznej.
Sterownik OLE DB dla programu SQL Server wysyła również identyfikator działania specyficzny dla wątku. Identyfikator działania jest przechwytywany w sesjach zdarzeń rozszerzonych, jeśli sesje są uruchamiane z włączoną opcją TRACK_CAUSALITY. W przypadku problemów z wydajnością aktywnego połączenia można pobrać identyfikator działania ze śledzenia dostępu do danych klienta (pole ActivityID), a następnie zlokalizować identyfikator działania w danych wyjściowych zdarzeń rozszerzonych. Identyfikator działania w zdarzeniach rozszerzonych to 16-bajtowy identyfikator GUID (nie taki sam jak identyfikator GUID dla identyfikatora połączenia klienta) dołączony z cztero bajtowym numerem sekwencji. Numer sekwencji reprezentuje kolejność żądania w wątku i wskazuje względną kolejność instrukcji wsadowych i RPC dla wątku. ActivityID jest opcjonalnie wysyłany dla instrukcji wsadowych SQL i żądań RPC, gdy śledzenie dostępu do danych jest włączone, a 18 bit w słowie konfiguracji śledzenia dostępu do danych jest włączony.
Poniżej znajduje się przykład, który używa Transact-SQL do uruchomienia sesji zdarzeń rozszerzonych, która będzie przechowywana w buforze pierścieniowym i będzie rejestrować identyfikator działania wysyłany z klienta w operacjach RPC i wsadowych.
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)
Plik kontrolny
Zawartość sterownika OLE DB dla pliku sterowania programu SQL Server (ctrl.guid) to:
{8B98D3F2-3CC6-0B9C-6651-9649CCE5C752} 0x630ff 0 MSDADIAG.ETW
{EE7FB59C-D3E8-9684-AEAC-B214EFD91B31} 0x630ff 0 MSOLEDBSQL.1
Plik MOF
Zawartość sterownika OLE DB dla pliku mof programu SQL Server to:
#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;
};