|
Анализ параметров зависимых процедур
|
|||
---|---|---|---|
#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 |
|
|
start [/forum/search_topic.php?author=Narkolog&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
others: | 764ms |
total: | 925ms |
0 / 0 |