примеру есть запрос, который использует агрегатную функцию, и мне нужно посмотреть все строки, для которых она применяется. В случае простых запросов я конечно могу просто изменить его текст, но проблема в том, что приходится работать с хранимками по 500-2000 строк sql.
Можно посмотреть sys.syscomments лайком по полю text
ты вопрос-то читал?
а нафига тебе их глядеть?
Прошу пардону, ответил на более осмысленную версию вопроса.
Написать другой запрос, без агрегации, выполнить
Я сейчас пишу юнит тесты для перенесенных хп на linq, и мне необходимы данные в качестве тестового набора. Заполнять руками десятки таблиц, и вникать в логику, которую к тому же писал не я, нету ни времени ни желания.
С простыми запросами я так и делаю, но есть запросы с кучей подзапросов и соединений, и вызовов других функций, которые бывают и по 500 и по 1000 строк кода.
всё равно рецепт тот же
а всю базу заюзать низя?
Я поэтому и спросил, может есть какой-то инструмент профилирования, способный быстро и эффективно решить эту проблему.
Все кортежи к которым идёт обращение(все что в output + все предикаты, в том числе участвующие в соединениях). Также учтите, сиквел не читает строками, он читает страницами. Некоторые данные также могут читаться несколько раз, как пример spool table. Хоть это и временная структура , но количество чтений/записи она добавит. Ну и конечно же работа с tempdb. Вообще не корректно поставленный вопрос имхо.
Нет, нам запрещено использовать базу в юнит тестах.
не работай с идиотами хранимки переписали на линк, заставили негра тестировать бд без бд все бы хорошо если не быть этим негром
В общем как я понял, это невозможно. Спасибо.
Возможно, но не понятно , что конкретно нужно получить как результат.
Предположим есть 2 таблицы: CREATE TABLE Rabbits ( Id INTEGER, Name VARCHAR(255), Age INTEGER, Weight DOUBLE, UnitId INTEGER, FOREIGN KEY (UnitId) REFERENCES Units(Id) ); CREATE TABLE Units ( Id INTEGER, Name VARCHAR(255) ); Я пишу для них запрос по типу select Age, sum(weight) as TotalWeight from Rabbits join Units on UnitId = Units.Id where Units.Name = 'Unit1' group by Age И мне необходимо получить данные, над которыми производился данный запрос. Они будут эквивалентны результату выполнения следующих запросов: select * from Units where Units.Name = 'Unit1' select Age, Weight, UnitId from Rabbits where UnitId = 1 На текущем примере это не составляет труда, но когда запрос содержит десятки таблиц с кучей jon'ов и подзапросов, это составляет большую проблему, как все это декомпозировать без нарушения логики.
Уберите все агрегаты и получите то что хотите.
Это и так понятно. Проблема в том, что те запросы, над которыми я работаю, очень сложны для этого.
Обсуждают сегодня