Как передать идентификатор активности расширенных событий SQL Server из C #? - PullRequest
1 голос
/ 26 сентября 2011

Я изучал использование расширенных событий в сценарии полного сквозного отслеживания.Меня особенно интересует идентификатор действия XEvent, который помогает следовать последовательности выполнения события для данного действия.

Как вы уже догадались, в моем сеансе событий в SQL Server 2008 задан следующий параметр:

TRACK_CAUSALITY = ON

Мой вопрос к вам: при выполнении запросов SQL из кода C # (Linq, Entity Framework и т. Д.) Можно ли вывести идентификатор активности, который будетбыть отслеженным расширенными событиями в SQL Server?

Например, я хотел бы иметь возможность распространять guid CorrelationManager.ActivityId моего исполняющего потока в SQL Server для трассировки XEvent.

Многиеспасибо

1 Ответ

2 голосов
/ 28 сентября 2011

Расширенные события в настоящее время не отслеживают идентификатор_действия для чего-либо за пределами SQL Server.TRACK_CAUSALITY предназначено только для отслеживания того, какое событие в SQL Server привело к другому событию в SQL Server, например, событие sql_statement_starting будет иметь конкретный идентификатор_действия и следующий номер 1, затем последующее событие file_read будет иметь тот же код_действия и 2, то естьСобытие wait_info для PAGEIOLATCH_SH будет иметь то же значение activity_id и seq, равное 3, и так далее, пока вы не доберетесь до sql_statement_completed с последним номером seq для activity_id.Вы найдете множество примеров, показывающих это в моих сообщениях в блоге о расширенных событиях:

http://sqlskills.com/blogs/jonathan/category/Extended-Events.aspx

Если вы сбросили данные в цель ETW, вы можете объединить их с трассировкой ETW вашегоПримените и нарисуйте слабые корреляции событий, основанных на происшествии, но между двумя возможными возможны отслеживания причинно-следственных связей.

...