SQL Trace устарел, и важно перейти на Extended Events, чтобы обеспечить непрерывную функциональность. Однако вручную изменять все трассировки на сеансы Extended Events может быть сложной задачей. К счастью, существует процедура, созданная Джонатаном Кехайасом из SQLskills, которая может автоматизировать этот процесс для вас.
Для использования этой процедуры вам необходимо быть на SQL Server 2012 или более поздней версии. Если вы используете SQL Server 2008 или 2008 R2, вероятно, что многие из ваших трассировок не могут быть прямо преобразованы в Extended Events из-за недостатка полного соответствия между ними.
Чтобы преобразовать скрипт SQL Trace в сеанс Extended Events, вы можете следовать этим шагам:
- Реализуйте процедуру, предоставленную Джонатаном Кехайасом, на вашей системе.
- Выполните процедуру с необходимыми параметрами, такими как TraceID, SessionName, PrintOutput и Execute.
- Запустите сеанс Extended Events с использованием оператора ALTER EVENT SESSION.
После создания и запуска сеанса Extended Events вы можете проверить, что он захватывает тот же тип данных, что и трассировка по умолчанию. Вы можете запустить пакет запросов для генерации событий, а затем искать эти события как в файле трассировки по умолчанию, так и в файле цели сеанса.
Важно отметить, что хотя Extended Events предназначены для замены SQL Trace, могут быть некоторые события, которые не имеют эквивалента в Extended Events. В таких случаях вам может потребоваться найти альтернативные способы захвата этих событий, например, с использованием SQL Server Audit.
Запрос сеанса Extended Events с использованием функции fn_xe_file_target_read_file может быть более трудоемким по сравнению с использованием функции fn_trace_gettable. Кроме того, он может работать медленнее и может потребовать выгрузки XML-вывода в отдельную временную таблицу перед выполнением XQuery против нее.
Также стоит отметить, что использование Profiler и “Watch Live Data” для просмотра трассировки и данных сеанса в реальном времени следует избегать, особенно в производственных сценариях, так как это может иметь катастрофические последствия.
Независимо от того, выберете ли вы продолжать использовать SQL Trace или перейти на Extended Events, важно учесть влияние на мониторимый сервер, часто называемое “эффектом наблюдателя”. В отдельной статье Джонатан продемонстрировал, что сеанс Extended Events имеет меньшее влияние на наблюдателя по сравнению с эквивалентной трассировкой на стороне сервера. Поэтому, помимо аспекта устаревания, производительность также может быть мотивирующим фактором для перехода от трассировки к Extended Events.
Следуя описанным выше шагам и используя предоставленную процедуру, вы легко можете преобразовать свои трассировки SQL в сеансы Extended Events, обеспечивая непрерывную функциональность и, возможно, улучшая производительность.