Почему некоторые команды на вкладке SQL Glimpse оранжевого цвета с восклицательным значком?
На вкладке SQL Glimpse некоторые запросы отображаются оранжевым цветом с восклицательным значком в крайнем левом столбце. Вот пример:
В своем исследовании я обнаружил вопрос Stackru: что означает оранжевый цвет на вкладке SQL Glimpse? - какие ссылки выпуск № 435 на Github для этого проекта, который с 2013 года и гласит:
Когда транзакция запускается, но остается незафиксированной, отображается значок предупреждения, а цвет шрифта устанавливается оранжевым.
Однако я не думаю, что это правильно, потому что в моем случае рассматриваемая хранимая процедура не использует транзакцию внутри нее и не заключена в транзакцию из вызывающего ее кода.NET.
Итак, мой вопрос: почему этот конкретный результат запроса отображается на вкладке SQL Glimpse оранжевым цветом и украшен восклицательным значком? К сожалению, при наведении на значок подсказки или другой подсказки нет.
1 ответ
Я скачал код Glimpse, чтобы докопаться до этого...
Короче говоря, Glimpse.Ado поддерживает словарь, который отслеживает, сколько раз каждый конкретный текст команды был выполнен за время существования веб-запроса. Любые тексты команд, которые были выполнены ранее в веб-запросе, помечаются как дубликаты, и эти дубликаты запросов окрашиваются в оранжевый цвет на вкладке Sql.
К сожалению, при использовании хранимых процедур текст команды - это просто имя хранимой процедуры. Следовательно, при определении того, является ли вызов дубликатом, базы Glimpse не совпадают с именем хранимой процедуры, а не с ее входными параметрами. Так что если у вас есть страница, которая вызывает один и тот же sproc дважды, но использует разные входные параметры, Glimpse помечает второй вызов как дубликат, даже если он не является действительно дубликатом (поскольку существуют разные параметры).
В любом случае, я надеюсь, что это поможет кому-то еще, кто интересуется тем же.