Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ADO.NET имеет встроенные функции трассировки данных, поддерживаемые поставщиками данных .NET для SQL Server, Oracle, OLE DB и ODBC, а также ADO.NET DataSet, и сетевыми протоколами SQL Server.
Трассировка вызовов API доступа к данным может помочь диагностировать следующие проблемы:
Несоответствие схемы между клиентской программой и базой данных.
Проблемы с недоступностью базы данных или сетевой библиотекой.
Ошибочное SQL, жестко запрограммированное или сгенерированное приложением.
Неправильной логике программирования.
Проблемы, связанные с взаимодействием между несколькими компонентами ADO.NET или между ADO.NET и собственными компонентами.
Для поддержки различных технологий трассировки трассировка расширяема, поэтому разработчик может отслеживать проблему на любом уровне стека приложений. Хотя трассировка не является функцией, характерной только для ADO.NET, поставщики Microsoft используют обобщённые API трассировки и инструментирования.
Дополнительные сведения об установке и настройке управляемой трассировки в ADO.NET см. в разделе "Трассировка доступа к данным".
Доступ к диагностическим сведениям в журнале расширенных событий
В поставщике данных .NET Framework для SQL Server обновлена трассировка доступа к данным (трассировка доступа к данным), чтобы упростить сопоставление событий клиента с диагностическими сведениями, такими как сбои подключения, из буфера подключения сервера и сведений о производительности приложений в журнале расширенных событий. Дополнительные сведения о чтении журнала расширенных событий см. в разделе View Event Session Data.
Для операций подключения ADO.NET отправит идентификатор подключения клиента. Если подключение завершается ошибкой, вы можете получить доступ к буферу кольца подключения (устранение неполадок подключения в SQL Server 2008 с буфером кольца подключения) и найти ClientConnectionID поле и получить диагностические сведения о сбое подключения. Идентификаторы подключений клиентов регистрируются в кольцевом буфере только при возникновении ошибки. (Если подключение завершается ошибкой перед отправкой пакета предварительной записи, идентификатор подключения клиента не будет создан.) Идентификатор подключения клиента — это 16-байтовый GUID. Идентификатор подключения клиента также можно найти в целевых выходных данных расширенных событий, если client_connection_id действие добавляется к событиям в сеансе расширенных событий. Вы можете включить трассировку доступа к данным и повторно запустить команду подключения и наблюдать ClientConnectionID за полем трассировки доступа к данным, если вам нужна дополнительная помощь по диагностике драйвера клиента.
Идентификатор подключения клиента можно получить программным способом с помощью SqlConnection.ClientConnectionID свойства.
Доступ к ClientConnectionID предоставляется SqlConnection объекту, который успешно устанавливает соединение. Если попытка подключения завершается ошибкой, ClientConnectionID может быть доступна через SqlException.ToString.
ADO.NET также отправляет идентификатор действия для конкретного потока. Идентификатор действия фиксируется в сеансах расширенных событий, если сеансы запускаются с включенным параметром TRACK_CAUSALITY. Для проблем с производительностью активного подключения можно получить идентификатор действия из трассировки доступа к данным клиента (ActivityID поле), а затем найти идентификатор действия в выходных данных расширенных событий. Идентификатор действия в расширенных событиях — это 16-байтовый GUID (не совпадающий с GUID для идентификатора подключения клиента), к которому добавлено четырехбайтовое порядковое число. Номер последовательности представляет порядок запроса в потоке и указывает относительный порядок пакетных инструкций и инструкций RPC для данного потока. В настоящее время ActivityID при необходимости отправляется для пакетных инструкций SQL и запросов RPC, когда включена трассировка доступа к данным и 18-й бит в слове конфигурации трассировки доступа к данным включен.
Следующий пример использует 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)