Есть ли способ проверить, кто выполняет запрос? - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть база данных на Azure.В Query Performance Insights каждый день я получаю один и тот же запрос в топ-5 длительных запросов.Это SELECT Id FROM MyTable запрос.

Я подумал, что это может быть мой код, поэтому я добавил Include для включения записей из MyTable в запросы (работа с EF, без отложенной загрузки).Но это не помогает.

Проверил также процедуры хранения, но также и не повезло (не могу найти место, где можно использовать MyTable).

Могу ли я найти место, где можно позвонитьэтот SELECT-запрос на моей стороне?


С sys.query_store_plan Я могу получить query_plan, но это мне мало помогает.

1 Ответ

0 голосов
/ 29 ноября 2018

Переходя по к этой странице , похоже, вы сможете запустить трассировку в базах данных Azure.При условии правильных параметров фильтрации это может помочь вам узнать, откуда поступил запрос или, по крайней мере, при его выполнении.(Отказ от ответственности: у меня нет личного опыта с ним)

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

SELECT Object_Name(object_id) FROM sys.sql_dependencies WHERE referenced_major_id = Object_Id('<table name>')
SELECT Object_Name(object_id) FROM sys.sql_modules WHERE definition LIKE '%<table name>%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...