Поделиться через


Доступ к диагностическим сведениям в журнале расширенных событий

Относится к:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsСистема аналитической платформы (PDW)SQL база данных в Microsoft Fabric

Скачать драйвер OLE DB

Начиная с версии SQL Server 2012 (11.x), драйвер OLE DB для SQL Server и отслеживание доступа к данным (трассировка доступа к данным) обновляются с целью упростить получение диагностических сведений об ошибках подключения из кольцевого буфера подключения и сведений о производительности приложений из журнала расширенных событий.

Сведения о чтении журнала расширенных событий см. в разделе "Просмотр данных о событиях" в SQL Server Management Studio.

Примечание.

Эта функция предназначена только для устранения неполадок и диагностики и может не подходить для аудита или безопасности.

Замечания

Для операций подключения OLE DB Driver for SQL Server отправляет идентификатор подключения клиента. Если подключение завершается сбоем, вы можете получить доступ к буферу кольца подключения (устранение неполадок подключения в SQL Server 2008 с помощью буфера кольца подключения и найти ClientConnectionID поле и получить диагностические сведения о сбое подключения. Идентификаторы подключений клиентов регистрируются в кольцевом буфере только при возникновении ошибки. (Если подключение завершается ошибкой перед отправкой пакета предварительной записи, идентификатор подключения клиента не будет создан.) Идентификатор подключения клиента — это 16-байтовый GUID. Идентификатор подключения клиента также можно найти в расположении вывода расширенных событий, если действие client_connection_id добавляется к событиям в сеансе расширенных событий. Если необходима дополнительная помощь в диагностике, то можно включить отслеживание доступа к данным и повторно выполнить команду соединения, а затем отследить в поле ClientConnectionID в трассировке доступа к данным операцию, завершившуюся ошибкой.

Также OLE DB Driver for SQL Server отсылает идентификатор действия определенного процесса. Идентификатор действия фиксируется в сеансах расширенных событий, если сеансы запускаются с включенным параметром TRACK_CAUSALITY. Если возникли проблемы производительности, связанные с активным соединением, то можно получить идентификатор активности из трассировки доступа клиента к данным (полеActivityID ) и найти идентификатор активности в выходных данных расширенных событий. Идентификатор действия в расширенных событиях — это 16-байтовый GUID (не совпадающий с идентификатором GUID для идентификатора подключения клиента), добавленный с 4-байтовым порядковым номером. Номер последовательности представляет порядок запроса в потоке и указывает относительный порядок пакетных инструкций и инструкций RPC для данного потока. ActivityID при необходимости отправляется для инструкций пакетной службы SQL и запросов RPC, когда включена трассировка доступа к данным, а 18-й бит в слове конфигурации трассировки доступа к данным включенаON.

Следующий пример использует Transact-SQL для запуска сеанса расширенных событий, который будет сохраняться в кольцевом буфере и регистрировать идентификаторы активности, отправляемые с клиента при выполнении операций RPC и пакетных операций.

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)

Управляющий файл

Содержимое управляющего файла для OLE DB Driver for SQL Server (ctrl.guid):

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

MOF-файл

Содержимое файла OLE DB Driver for SQL Server mof :

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