Это был сбой хранилища. У меня была та же проблема на прошлой неделе, но у меня не было времени открыть дело для RH. Сегодня я проверил еще раз, и pcsc-lite доступен на rhel-7-server-rpms, так что все прошло хорошо и зависимости были устранены. Перед запуском yum install убедитесь, что вы очистили данные репо, и все заработает.
Я думаю, что ответ заключается в том, что SQL - это язык на основе множеств с несколькими процедурными элементами. Поскольку дизайнеры думали в терминах, основанных на множествах, они не думали, что обычный тип отладки, который есть в других языках, важен. Тем не менее, я думаю, что кое-что из этого меняется. Вы можете установить точки останова в SQL Server 2008. Я не использовал его на самом деле, поскольку у вас должны быть базы данных SQL Server 2008, прежде чем он будет работать, и большинство из нас по-прежнему SQL Server 2000. Но он доступен и позволяет вам проходить через вещи. У вас все еще будут проблемы, когда ваш оператор select имеет длину 150 строк, и он знает, что синтаксис неправильный, но он не может точно указать, где, поскольку это все одна команда.
Лично, когда я пишу длинный процедурный SP, Я строю в тестовом режиме, который включает в себя отображение результатов моих действий, значений ключевых переменных в определенных точках, которые меня интересуют, и печать постов, которые позволяют мне узнать, какие шаги были выполнены, а затем откат всего когда сделано. Таким образом, я вижу, что произошло бы, если бы он работал по-настоящему, но не повредил бы ни одну из данных в базе данных, если я ошибся. Я считаю это очень полезным. Это может значительно увеличить размер вашего процесса. У меня есть шаблон, который я использую, и в нем сконфигурирована большая часть необходимой мне структуры, так что это не займет у меня много времени. Тем более, что я никогда не добавляю вкладыш. обновить или удалить процедуру без предварительной проверки связанного выбора, чтобы убедиться, что у меня есть нужные записи.
меня интересуют и печатают посты, которые сообщают мне, какие шаги были выполнены, а затем откатывают все назад, когда все сделано. Таким образом, я вижу, что произошло бы, если бы он работал по-настоящему, но не повредил бы ни одну из данных в базе данных, если я ошибся. Я считаю это очень полезным. Это может значительно увеличить размер вашего процесса. У меня есть шаблон, который я использую, и в нем сконфигурирована большая часть необходимой мне структуры, так что это не займет у меня много времени. Тем более, что я никогда не добавляю вкладыш. обновить или удалить процедуру без предварительной проверки связанного выбора, чтобы убедиться, что у меня есть нужные записи. меня интересуют и печатают посты, которые сообщают мне, какие шаги были выполнены, а затем откатывают все назад, когда все сделано. Таким образом, я вижу, что произошло бы, если бы он работал по-настоящему, но не повредил бы ни одну из данных в базе данных, если я ошибся. Я считаю это очень полезным. Это может значительно увеличить размер вашего процесса. У меня есть шаблон, который я использую, и в нем сконфигурирована большая часть необходимой мне структуры, так что это не займет у меня много времени. Тем более, что я никогда не добавляю вкладыш. обновить или удалить процедуру без предварительной проверки связанного выбора, чтобы убедиться, что у меня есть нужные записи. но не повредил какие-либо данные в базе данных, если я ошибся. Я считаю это очень полезным. Это может значительно увеличить размер вашего процесса. У меня есть шаблон, который я использую, и в нем сконфигурирована большая часть необходимой мне структуры, так что это не займет у меня много времени. Тем более, что я никогда не добавляю вкладыш. обновить или удалить процедуру без предварительной проверки связанного выбора, чтобы убедиться, что у меня есть нужные записи. но не повредил какие-либо данные в базе данных, если я ошибся. Я считаю это очень полезным. Это может значительно увеличить размер вашего процесса. У меня есть шаблон, который я использую, и в нем сконфигурирована большая часть необходимой мне структуры, так что это не займет у меня много времени. Тем более, что я никогда не добавляю вкладыш. обновить или удалить процедуру без предварительной проверки связанного выбора, чтобы убедиться, что у меня есть нужные записи.Что касается точек останова и пошагового выполнения кода, вы можете сделать это с MS SQL Server (на мой взгляд, в 2005+ легче, чем в 2000).
В простых случаях ранний при отладке в процессе разработки, иногда загадочные сообщения обычно достаточно хороши, чтобы устранить ошибку - синтаксическая ошибка, не могу выполнить X с Y. Если я в затруднительном положении, я вернусь к «отладке printf» в sproc текст, потому что это быстро и легко. Через некоторое время с выбранной вами базой данных простые проблемы устаревают, и вы просто берете их с ходу.
Однако, как только код выпущен, сложность проблем становится слишком высокой. Я считаю себя счастливчиком, если смогу их воспроизвести. Кроме того, в местах, где разработчик во мне хотел бы отладчик, а администратор базы данных во мне, говорит: «Ни в коем случае нельзя ставить там отладчик».
Я думаю, что объяснение состоит в том, что «обычные» языки имеют гораздо меньшие отдельные операторы, чем SQL, так что гранулярность одного оператора указывает на гораздо меньшую часть кода в них, чем в SQL. Один оператор SQL может иметь длину страницы или более; в других языках это обычно одна строка.
Я не думаю, что это делает невозможным для отладчиков / IDE более точное определение ошибок, но я подозреваю, что это усложняет задачу.
Я согласен с вашей жалобой.
Создание Хорошая структура ведения журналов и ее чрезмерное использование в ваших sprocs - это то, что лучше всего работает для меня.
До и после каждой транзакции или важной части логики я записываю имя sproc, метку времени шага и количество строк (если это уместно) в мою таблицу журнала. , Я обнаружил, что когда я это сделал, я обычно могу сузить проблемное место в течение нескольких минут.
Добавить параметр отладки в sproc (по умолчанию «N») и передать его любым другим sprocs, которые он вызывает так что вы можете легко включить или выключить регистрацию.
Я использую следующую тактику.
При написании хранимой процедуры есть @procStep var каждый раз, когда выполняется новый логический шаг set @procStep = "Что за ... здесь происходит";
остальное здесь