Фильтровать расширенные события по затронутой таблице? - PullRequest
2 голосов
/ 06 сентября 2011

Я работаю с расширенными событиями в SQL Server 2008, чтобы выполнить некоторый мониторинг.В основном меня интересуют следующие события:

  • sqlserver.sp_statement_completed
  • sqlserver.sp_statement_starting
  • sqlserver.sql_statement_completed
  • sqlserver.sqstastal*

Я хотел бы знать, возможно ли отфильтровать эти расширенные события в соответствии с таблицами, на которые они влияют.Я не видел ни одного предиката, который бы помог мне выполнить такую ​​фильтрацию.Поскольку одна хранимая процедура может фактически повлиять на несколько таблиц, я даже не уверен, как они это сделают, но кто-то там мог подумать о каком-то изящном приеме.

Заранее спасибо!

1 Ответ

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

Нет, в SQL Server 2008 нет ничего, что позволило бы вам попытаться сделать это как часть определения сеанса, но вы можете сделать это как часть обработки после события, если вы используете track_causality = on и добавляетев событии sqlserver.lock_aquired для блокировки стабильности схемы только на уровне объекта, а затем отфильтруйте по object_id объектов, на которые вы хотите ориентироваться.Затем вам нужно выполнить фильтрацию на основе activity_xref_id, и вы можете выбросить начальные / завершенные события для тех activity_xref_ids, с которыми не связано событие sqlserver.lock_acquired.Это будет работать, но это сложно и будет также собирать много дополнительных шумовых данных.

Если подумать, вы также можете просто использовать событие sqlserver.lock_acquired с действиями sqlserver.sql_text и sqlserver.tsql_stack, чтобы иметь возможность делать то же самое с меньшим шумом.элементы данных, возвращаемые начальными / завершенными событиями, которые вы хотите иметь возможность соотнести с доступом к определенному объекту, или вы просто хотите знать SP и специальный SQL, которые обращаются к определенному объекту в базе данных?

Дайте мне знать больше подробностей, и я посмотрю, смогу ли я создать демо, которое показывает это для вас.

...