• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

А как в восьмерке отлаживают запросы?

  • Автор темы Guest
  • Дата начала
G

Guest

Вопрос 1
Конструктор запроса создал текст запроса.
А как-то увидеть результат его выполнения (т е выборку данных в табличном виде) можно ?

Вопрос 2
Запрос состоит из большого количества вложенных запросов.
Конструктор запроса показывает мне состав только самого наружного запроса
Я вижу вложенные поля, а не весь вложенный запрос как целое


Как профи отлаживают такие сложные конструкции - только силой мысли ?
 
G

Guest

1. Запрос.Выполнить().Выгрузить() - возвращает переменную типа ТаблицаЗначений. Если написать Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам) То получим ДеревоЗначений. Ставим точку останова после этой строчки и смотрим то вышло.
Альтернативный вариант- если умеешь работать с обработкой КонсольОтчетов, то бросаешь туда запрос и смотришь что получилось. Если не умеешь- советую научиться. Обработка запускается в предприятии.

2. Вложенный запрос можно в тексте запроса найти по ключевому слову "Выбрать". Если, к примеру, у тебя присоединяется таблица вложенного запроса, то ты увидешь примерно такое
ЛЕВОЕ СОЕДИНЕНИЕ ( Выбрать <Вложенный запрос>) ПО <Связи>

МОгу сказхать про себя. Если нужно добавить доп поле или условие- чаще делаю руками, потому что большие запросы либо составляются из нескольких текстов(получить напрямую текст запроса нелья) либо в отчетах. А там верняк есть строчки для категорий. Конструктов сотрет "// Категории" и подобное.
 
G

Guest

1. Запрос.Выполнить().Выгрузить() - возвращает переменную типа ТаблицаЗначений. Если написать Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам) ...
Спасибо, Найлло!
Этот вариант сработал: Результат.Строки - [Показать значение в отдельном поле] и
дал мне искомую таблицу

С консолью отчетов тоже нормально, хотя в моем случае там в запросе очень
много параметров и заполнять их руками утомительно.

По вложенным запросам - в моем запросе много вложений с левым либо внутренним соединением и какое-то из них ,вероятно, гадит, задваивая результат.
Я и искал, можно ли каждое вложение выделить отдельно и протестировать результат
его выборки. Сейчас приходится кромсать текст программы, последовательно исключая
каждое вложение.
 
G

Guest

попробуй поймать итоговый текст запроса, если он сразу не открывается конструктором. Это можно сделать просто определив значение ЗАпрос.Текст перед выполнением.
Если запрос таки открвается конструктором, то открой каждый вложенный запрос и там слева внизу буит кнопка "Запрос"- там копируешь текст и в консоль. Посмотри сколько строк возвращает этот запрос. Если возвращает только одну, а у тебя в итоге задваивает- удали из полей все, кроме тех по которым идет объединение таблиц.
Хотя метод исключения чем то хорошь =)
 
G

Guest

попробуй поймать итоговый текст запроса ...

Спасибо, Найлло!
Метод возьму на вооружение
Ошибку нашел и она естественно оказалась не в запросе, а в предыдущем коде
Хотя до этого все куски запроса пришлось прогнать через консоль.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!