|
Анализ параметров зависимых процедур
|
|||
---|---|---|---|
#18+
Как найти подобную проблему в БД: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 15:12 |
|
Анализ параметров зависимых процедур
|
|||
---|---|---|---|
#18+
sbebr6te7w, лишить премии разработчиков ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 15:16 |
|
Анализ параметров зависимых процедур
|
|||
---|---|---|---|
#18+
Запустить предварительно написанные тесты. Они упадут. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 15:26 |
|
Анализ параметров зависимых процедур
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич Запустить предварительно написанные тесты. Они упадут. Так в том и заключается смысл задачи, что нужно найти проблему до передачи на тестирование. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 15:31 |
|
Анализ параметров зависимых процедур
|
|||
---|---|---|---|
#18+
ну ок, еще как вариант так: Код: sql 1. 2.
таргет сами думаю сможете добавить. насобирать событий и уже на основе данных определить где косяки. но вам все равно нужно будет запустить на обработку все бизнес процессы. если процедурка в которой есть ошибка не вызовется то и в трассу ничего не получите. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 15:32 |
|
Анализ параметров зависимых процедур
|
|||
---|---|---|---|
#18+
felix_ff но вам все равно нужно будет запустить на обработку... Нельзя. Нужен аналитический путь. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 15:38 |
|
Анализ параметров зависимых процедур
|
|||
---|---|---|---|
#18+
sbebr6te7w felix_ff но вам все равно нужно будет запустить на обработку... Нельзя. Нужен аналитический путь. это геммор. лучше бейте по рукам разработчиков за такие ошибки, это их прямая обязанность - писать код без ошибок. я могу указать вам вектор направления, но это полнейший треш: берете предстевление sys.sql_expression_dependencies для каждой процедуры находите зависимости других модулей. рекурсивно для каждой процедуры: 1) получаете ее определение. 2) это определение делите на куски по строкам 3) для каждой зависимости проходитесь перебором строк находя начало вызова модуля по имени 4) начинаете подсчитывать количество параметров по сути дела разделителей (",") 5) тут самое сложное: нужно понять в какой момент остановиться считать, вам нужна будет некая функция возвращаюзая признак закончен ли вызов процедуры к примеру есть ли наличие ";" или найдено выражение новой инструкции и.т.д. при этом еще надо анализировать не литеральное ли это значение, а если там используется динамика то это в разы усложняет анализ. 6) после подсчета количества параметров сравниваете их с количеством параметров из sys.parameters; ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 16:02 |
|
Анализ параметров зависимых процедур
|
|||
---|---|---|---|
#18+
felix_ff, felix_ffэто их прямая обязанность - писать код без ошибок.Ага. Звучит как "их прямая обязанность - быть ротобами". Для выявления ошибок давно придуман процесс тестирования. Почему автор хочеи выявлять ошибки без этого процесса - не понятно. felix_ffя могу указать вам вектор направленияА если еще вспомнить, что параметры могут быть именоваными, стоять в любом порядке, а так же могут иметь дефолтные значения, то тут целый парсер TSQL понадобится. Кстати, возможно, SSDT умеет палить такую ситуацию. sbebr6te7w, попробуйте загнать туда базу и сбилдить. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 16:09 |
|
Анализ параметров зависимых процедур
|
|||
---|---|---|---|
#18+
felix_ff это их прямая обязанность - писать код без ошибок. Не нужно меня тыкать носом в мои обязанности, мне и нужна эта хрень только ради этого. У меня уже крыша едет после верстки полсотни процедур за день. А проверить я никак не могу. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 16:09 |
|
Анализ параметров зависимых процедур
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич Почему автор хочеи выявлять ошибки без этого процесса - не понятно. Потому что я хочу премию получать, а не пи@%#ли. Да и не реально это, архитектура системы настолько дебильная и огромная, что достаточно тронуть одну процедуру и может потребоваться правка сотни других, отвечающих за разные модули системы. Чтобы прогнать тесты всего и вся, наверное, отделу тестирования год придется работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 16:26 |
|
Анализ параметров зависимых процедур
|
|||
---|---|---|---|
#18+
sbebr6te7w, так вы разработкой занимаете сразу на проме чтоли? А тестовых стендов нет где не страшно запустить процу, которая даже если что то сломает можно будет спокойно тест поднять с бэкапа? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 16:29 |
|
Анализ параметров зависимых процедур
|
|||
---|---|---|---|
#18+
sbebr6te7w, На основе sys.parameters формировать строку вида и выполнить ее Код: sql 1.
Получите ошибку без фактического выполнения процедуры. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 16:30 |
|
Анализ параметров зависимых процедур
|
|||
---|---|---|---|
#18+
invm, Шикарно. То есть получается, если передавать null, null, null, то проходит проверка всей процедуры, независимо от условий? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 16:34 |
|
Анализ параметров зависимых процедур
|
|||
---|---|---|---|
#18+
sbebr6te7w, кстати да, хороший вариант предложили Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 16:48 |
|
Анализ параметров зависимых процедур
|
|||
---|---|---|---|
#18+
sbebr6te7w, Неважно что передавать, важно включить fmtonly - тогда процедура просто компилируется без выполнения. Null - просто универсальное значение. Трудности будут только с параметрами табличного типа. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 17:00 |
|
Анализ параметров зависимых процедур
|
|||
---|---|---|---|
#18+
Ничего не получилось, все нужные процедуры вылетели в ошибку лимита вложенности. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2020, 08:45 |
|
Анализ параметров зависимых процедур
|
|||
---|---|---|---|
#18+
sbebr6te7w Гавриленко Сергей Алексеевич Почему автор хочеи выявлять ошибки без этого процесса - не понятно. Потому что я хочу премию получать, а не пи@%#ли. Да и не реально это, архитектура системы настолько дебильная и огромная, что достаточно тронуть одну процедуру и может потребоваться правка сотни других, отвечающих за разные модули системы. Чтобы прогнать тесты всего и вся, наверное, отделу тестирования год придется работать. Как справиться с этим отделу тестирования, это уж он сам должен придумать (например, написать автоматические тесты), вы же им не начальник, что бы указывать, как работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2020, 09:39 |
|
Анализ параметров зависимых процедур
|
|||
---|---|---|---|
#18+
sbebr6te7w Ничего не получилось, все нужные процедуры вылетели в ошибку лимита вложенности. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2020, 09:46 |
|
Анализ параметров зависимых процедур
|
|||
---|---|---|---|
#18+
invm Значит делаете не так, как показали. Лимит вложенности можно достичь только при выполнении. Ну сами попробуйте Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2020, 10:01 |
|
Анализ параметров зависимых процедур
|
|||
---|---|---|---|
#18+
sbebr6te7w, Ок. И при компиляции тоже, что логично. Вам предложен способ выявить ошибки компиляции. Выявить только какую-то конкретную ошибку при компиляции не выйдет. Можете попробовать что-то типа этого - https://blogs.msmvps.com/bsonnino/2018/08/10/parsing-sql-server-code-with-c/ Возможно получится. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2020, 10:45 |
|
Анализ параметров зависимых процедур
|
|||
---|---|---|---|
#18+
Тут не в компиляции дело, а в способе. Например: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Без проблем выполнится обычным способом, но уйдет в ошибку лимита при SET FMTONLY ON. По идее к этой фиче должна прилагаться настройка уровня вложенной компиляции, но видимо ее забыли реализовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2020, 11:55 |
|
Анализ параметров зависимых процедур
|
|||
---|---|---|---|
#18+
sbebr6te7w Гавриленко Сергей Алексеевич Запустить предварительно написанные тесты. Они упадут. Так в том и заключается смысл задачи, что нужно найти проблему до передачи на тестирование. Полноценный цикл разработки подразумевает наличие настраиваемой среды на рабочем месте разработчика, в том числе средства создания, отладки и тестирования кода. Разработчик самостоятельно производит тестирование "модульными тестами". Для SQL это, скорее, функциональные, чем модульные. Прежде, чем передавать свою разработку в центральный репозиторий, разработчик обязан убедиться, что тесты работают. Если у вас не так, то уикл разработки затянется из-за множества итераций цикла разработка-тестирование, растянутых по времени обратной связью от тестировщиков. Говоря конкретно, у разработчика должна быть VS с проектами баз, локальный сервер Developer Edition и проект тестов в общем решении или отдельно, как удобно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2020, 12:22 |
|
Анализ параметров зависимых процедур
|
|||
---|---|---|---|
#18+
Владислав Колосов, Вы мыслите объемами разработки приложения типа блокнот. А тут речь идет о системе, где одна только sys.sql_expression_dependencies под 200тыс. Меня даже слушать никто не будет, что тут должно быть и как, покоцаю тестовую базу - лишение премии. А потом еще и восстанавливать заставят под крики "быстрей-быстрей". ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2020, 13:04 |
|
Анализ параметров зависимых процедур
|
|||
---|---|---|---|
#18+
sbebr6te7w, Объем объектов у нас на порядок меньше, но локально тестировать можно независимо от количества объектов, в общем-то. Не обязательно выполнять локально регрессионное тестирование. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2020, 13:13 |
|
Анализ параметров зависимых процедур
|
|||
---|---|---|---|
#18+
sbebr6te7w Владислав Колосов, Вы мыслите объемами разработки приложения типа блокнот. А тут речь идет о системе, где одна только sys.sql_expression_dependencies под 200тыс. Вы пробовали задать этим вашим "никто" вопрос, как вы должны убедиться, что ваши правки ничего не сломали? Ни в одном из безнес-сценариев? Прогнать их все и выполнить работу тестировщиков? А тестировщики за вас код писать будут взамен? sbebr6te7w Меня даже слушать никто не будет, что тут должно быть и как, покоцаю тестовую базу - лишение премии. А потом еще и восстанавливать заставят под крики "быстрей-быстрей". Поэтому не ждите особого понимания вашей проблемы и боли от того, у кого процесс более-менее нормальный. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2020, 13:39 |
|
Анализ параметров зависимых процедур
|
|||
---|---|---|---|
#18+
sbebr6te7w Владислав Колосов, Вы мыслите объемами разработки приложения типа блокнот. А тут речь идет о системе, где одна только sys.sql_expression_dependencies под 200тыс. Меня даже слушать никто не будет, что тут должно быть и как, покоцаю тестовую базу - лишение премии. А потом еще и восстанавливать заставят под крики "быстрей-быстрей". Как можно в большом проекте работать без тестирования, ведения проектов, сорс-контрола, привязки изменений к таскам и проектам, без девелоперской и тестовой среды (отдельных), без сборки скриптов деплоя, и их проверки? и так далее. Я соглашусь с вами, что не всегда можно (и нужно) делать тестовую среду на компе разработчика, но уж бояться выложить изменения на сервер разработки - это говорит о неправильных процессах. Как и, собственно, ваш исходный вопрос. Вы, конечно, можете придумать некие проверки кода в статике, но очевидно же, что это покроет единицы процентов ошибок - так не лучше ли сразу поставить правильные процессы разработки? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2020, 13:55 |
|
Анализ параметров зависимых процедур
|
|||
---|---|---|---|
#18+
sbebr6te7w Меня даже слушать никто не будет, что тут должно быть и как, покоцаю тестовую базу - лишение премии. А потом еще и восстанавливать заставят под крики "быстрей-быстрей". У вас в компании безобразно поставлены процессы. Раз так, то просто приспосабливайтесь к ним. Проверяйте руками каждое изменение, делайте в 10 раз меньше, что бы не допустить ошибок. Ну, или меняйте компанию на нормальную, если для вас в текущей компании неизбежны постоянные наказания за чужие ошибки. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2020, 13:58 |
|
Анализ параметров зависимых процедур
|
|||
---|---|---|---|
#18+
В общем-то, выполнять регрессионные тесты перед пушем в репозиторий - правила хорошего тона и значительно сокращает цикл разработки. Но при 200к связей это может занимать несколько часов на персоналке при полном покрытии. Здесь нужен какой-то компромисс. Однако, от целевых тестов разработчика никто избавлять не должен. Все равно, что точить нож и отдавать на проверку в другой отдел. Потом получать нож на переточку, потом опять отдавать. Абсолютно непродуктивно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2020, 14:45 |
|
|
start [/forum/topic.php?all=1&fid=46&tid=1686171]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
55ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 172ms |
0 / 0 |