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


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

Скачать драйвер JDBC

В Microsoft JDBC Driver 4.0 for SQL Server трассировка (функция Трассировка операций драйвера) упрощает сопоставление событий клиентов с диагностическими сведениями. Можно отслеживать, к примеру, ошибки подключения из кольцевого буфера подключений сервера, а также сведения о производительности приложения в журнале расширенных событий. Дополнительные сведения о чтении журнала расширенных событий см. в разделе Расширенные события.

Сведения

При выполнении операций соединения Microsoft JDBC Driver для SQL Server передает идентификатор соединения клиента. Если подключение завершилось ошибкой, то в кольцевом буфере подключений можно найти поле ClientConnectionID и получить диагностические данные по ошибке подключения. Дополнительные сведения о кольцевом буфере см. в статье об устранении неполадок с подключением в SQL Server 2008 с помощью кольцевого буфера подключения. Идентификаторы подключений клиентов регистрируются в кольцевом буфере только при возникновении ошибки. Если подключение завершилось сбоем до отправки предварительного пакета входа, то идентификатор подключения клиента не формируется.

Идентификатор клиентского соединения — это 16-байтовый идентификатор GUID. Если действие client_connection_id добавляется к событиям в сеансе расширенных событий, идентификатор подключения клиента можно найти выходных данных расширенных событий. Если необходима дополнительная диагностика драйвера клиента, можно включить трассировку, повторно выполнить команду подключения и проверить в трассировке значение поля ClientConnectionID.

Идентификатор подключения клиента можно получить программными средствами с помощью интерфейса ISQLServerConnection. Идентификатор соединения также содержится во всех связанных с соединением исключениях.

В случае ошибки соединения идентификатор соединения клиента в трассировочной информации встроенной диагностики (BID) сервера и в кольцевом буфере соединений поможет сопоставить клиентские соединения с соединениями на сервере. Дополнительные сведения о трассировке BID на сервере см. в разделе Трассировка доступа к данным. Обратите внимание, что в статье о трассировке доступа к данным также содержатся соответствующие сведения, неприменимые к Microsoft JDBC Driver для SQL Server. См. статью о трассировке операций драйвера с использованием Microsoft JDBC Driver для SQL Server.

Драйвер JDBC также отсылает идентификатор действия определенного процесса. Если сеанс запущен со включенным параметром TRACK_CAUSAILITY, идентификатор действия регистрируется в сеансах расширенных событий. В случае проблем с производительностью активного соединения получить идентификатор действия можно из трассировки клиента (поле ActivityID), а затем найти этот идентификатор действия в выходных данных расширенных событий.

Идентификатором действия в расширенных событиях является 16-байтовый идентификатор GUID (который отличается от идентификатора GUID соединения клиента), к которому добавляется порядковый номер из четырех байт. Этот порядковый номер представляет порядок запроса в потоке. Значение ActivityId отправляется для пакетных инструкций SQL и запросов RPC. Чтобы включить отправку значения ActivityId на сервер, укажите в файле Logging.Properties следующую пару "ключ-значение":

com.microsoft.sqlserver.jdbc.traceactivity = on

Любое значение больше on (учитывается регистр) отключает отправку ActivityId.

Дополнительные сведения см. в статье о трассировке операций драйвера. Этот флаг трассировки используется совместно с соответствующими средствами ведения журнала объектов JDBC для определения того, следует ли выполнять трассировку и отправку значения ActivityId в драйвере JDBC. Помимо обновления файла Logging.Properties включите средство ведения журнала com.microsoft.sqlserver.jdbc на уровне FINER или более высоком уровне. Чтобы отправлять значение ActivityId на сервер в отношении запросов, выполняемых определенным классом, включите средство ведения журнала соответствующего класса на уровне FINER или FINEST. Например, если классом является класс SQLServerStatement, включите средство ведения журнала com.microsoft.sqlserver.jdbc.SQLServerStatement.

В следующем примере код 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)

См. также раздел

Диагностика проблем с JDBC Driver