Существует ли лучший способ отладить SQL?

Это был сбой хранилища. У меня была та же проблема на прошлой неделе, но у меня не было времени открыть дело для RH. Сегодня я проверил еще раз, и pcsc-lite доступен на rhel-7-server-rpms, так что все прошло хорошо и зависимости были устранены. Перед запуском yum install убедитесь, что вы очистили данные репо, и все заработает.

8
задан Rex M 4 May 2009 в 18:38
поделиться

5 ответов

Я думаю, что ответ заключается в том, что SQL - это язык на основе множеств с несколькими процедурными элементами. Поскольку дизайнеры думали в терминах, основанных на множествах, они не думали, что обычный тип отладки, который есть в других языках, важен. Тем не менее, я думаю, что кое-что из этого меняется. Вы можете установить точки останова в SQL Server 2008. Я не использовал его на самом деле, поскольку у вас должны быть базы данных SQL Server 2008, прежде чем он будет работать, и большинство из нас по-прежнему SQL Server 2000. Но он доступен и позволяет вам проходить через вещи. У вас все еще будут проблемы, когда ваш оператор select имеет длину 150 строк, и он знает, что синтаксис неправильный, но он не может точно указать, где, поскольку это все одна команда.

Лично, когда я пишу длинный процедурный SP, Я строю в тестовом режиме, который включает в себя отображение результатов моих действий, значений ключевых переменных в определенных точках, которые меня интересуют, и печать постов, которые позволяют мне узнать, какие шаги были выполнены, а затем откат всего когда сделано. Таким образом, я вижу, что произошло бы, если бы он работал по-настоящему, но не повредил бы ни одну из данных в базе данных, если я ошибся. Я считаю это очень полезным. Это может значительно увеличить размер вашего процесса. У меня есть шаблон, который я использую, и в нем сконфигурирована большая часть необходимой мне структуры, так что это не займет у меня много времени. Тем более, что я никогда не добавляю вкладыш. обновить или удалить процедуру без предварительной проверки связанного выбора, чтобы убедиться, что у меня есть нужные записи.

меня интересуют и печатают посты, которые сообщают мне, какие шаги были выполнены, а затем откатывают все назад, когда все сделано. Таким образом, я вижу, что произошло бы, если бы он работал по-настоящему, но не повредил бы ни одну из данных в базе данных, если я ошибся. Я считаю это очень полезным. Это может значительно увеличить размер вашего процесса. У меня есть шаблон, который я использую, и в нем сконфигурирована большая часть необходимой мне структуры, так что это не займет у меня много времени. Тем более, что я никогда не добавляю вкладыш. обновить или удалить процедуру без предварительной проверки связанного выбора, чтобы убедиться, что у меня есть нужные записи.

меня интересуют и печатают посты, которые сообщают мне, какие шаги были выполнены, а затем откатывают все назад, когда все сделано. Таким образом, я вижу, что произошло бы, если бы он работал по-настоящему, но не повредил бы ни одну из данных в базе данных, если я ошибся. Я считаю это очень полезным. Это может значительно увеличить размер вашего процесса. У меня есть шаблон, который я использую, и в нем сконфигурирована большая часть необходимой мне структуры, так что это не займет у меня много времени. Тем более, что я никогда не добавляю вкладыш. обновить или удалить процедуру без предварительной проверки связанного выбора, чтобы убедиться, что у меня есть нужные записи.

но не повредил какие-либо данные в базе данных, если я ошибся. Я считаю это очень полезным. Это может значительно увеличить размер вашего процесса. У меня есть шаблон, который я использую, и в нем сконфигурирована большая часть необходимой мне структуры, так что это не займет у меня много времени. Тем более, что я никогда не добавляю вкладыш. обновить или удалить процедуру без предварительной проверки связанного выбора, чтобы убедиться, что у меня есть нужные записи.

но не повредил какие-либо данные в базе данных, если я ошибся. Я считаю это очень полезным. Это может значительно увеличить размер вашего процесса. У меня есть шаблон, который я использую, и в нем сконфигурирована большая часть необходимой мне структуры, так что это не займет у меня много времени. Тем более, что я никогда не добавляю вкладыш. обновить или удалить процедуру без предварительной проверки связанного выбора, чтобы убедиться, что у меня есть нужные записи.

7
ответ дан 5 December 2019 в 13:01
поделиться

Что касается точек останова и пошагового выполнения кода, вы можете сделать это с MS SQL Server (на мой взгляд, в 2005+ легче, чем в 2000).

В простых случаях ранний при отладке в процессе разработки, иногда загадочные сообщения обычно достаточно хороши, чтобы устранить ошибку - синтаксическая ошибка, не могу выполнить X с Y. Если я в затруднительном положении, я вернусь к «отладке printf» в sproc текст, потому что это быстро и легко. Через некоторое время с выбранной вами базой данных простые проблемы устаревают, и вы просто берете их с ходу.

Однако, как только код выпущен, сложность проблем становится слишком высокой. Я считаю себя счастливчиком, если смогу их воспроизвести. Кроме того, в местах, где разработчик во мне хотел бы отладчик, а администратор базы данных во мне, говорит: «Ни в коем случае нельзя ставить там отладчик».

1
ответ дан 5 December 2019 в 13:01
поделиться

Я думаю, что объяснение состоит в том, что «обычные» языки имеют гораздо меньшие отдельные операторы, чем SQL, так что гранулярность одного оператора указывает на гораздо меньшую часть кода в них, чем в SQL. Один оператор SQL может иметь длину страницы или более; в других языках это обычно одна строка.

Я не думаю, что это делает невозможным для отладчиков / IDE более точное определение ошибок, но я подозреваю, что это усложняет задачу.

4
ответ дан 5 December 2019 в 13:01
поделиться

Я согласен с вашей жалобой.

Создание Хорошая структура ведения журналов и ее чрезмерное использование в ваших sprocs - это то, что лучше всего работает для меня.

До и после каждой транзакции или важной части логики я записываю имя sproc, метку времени шага и количество строк (если это уместно) в мою таблицу журнала. , Я обнаружил, что когда я это сделал, я обычно могу сузить проблемное место в течение нескольких минут.

Добавить параметр отладки в sproc (по умолчанию «N») и передать его любым другим sprocs, которые он вызывает так что вы можете легко включить или выключить регистрацию.

1
ответ дан 5 December 2019 в 13:01
поделиться

Я использую следующую тактику.

При написании хранимой процедуры есть @procStep var каждый раз, когда выполняется новый логический шаг set @procStep = "Что за ... здесь происходит";

остальное здесь

0
ответ дан 5 December 2019 в 13:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: