Отладка хранимых процедур в visual studio
я расследую нечетная ошибка из хранимой процедуры SQL Server 2005 который я не могу воспроизвести, вызвав его непосредственно из Management Studio.
поэтому я хотел бы иметь возможность:
- установить точку останова в хранимой процедуре
- дождитесь вызова процедуры извне и попадания точки останова
- см. значения переданных параметров
- шаг через хранимую процедура
возможно ли это, и если да, то как?
Если вы не можете пройти через код, вот два способа:
объявить переменную как:
добавьте в него отладочную информацию по мере прохождения кода:
во всех точках выхода (после любого отката) добавить:
вставить в значения YourLogTable (. , @LogInfo)
в зависимости от использования транзакции и ошибки в в частности, вы можете просто вставлять много раз, не опасаясь отката, поэтому вам нужно будет изменить это на свою ситуацию.
это может быть не вариант, потому что он использует очень небезопасную хранимую процедуру xp_cmdshell. Однако, если вы можете использовать это и если транзакции из вызывающего приложения вызывают проблему, попробуйте создать эту хранимую процедуру:
sprinkle вызывает эту процедуру они через ваш код записывают то, что вам нужно, в файл на сервере
обновление: Я не уверен, есть ли способ прикрепиться к работающему сохраненному proc. Вы можете использовать profiler для получения трассировки в реальном времени выполняемых операторов (SP:StmtStarting). Кроме того, проверить Apex SQL Debug который, кажется, имеет больше возможностей и доступен в качестве надстройки для Management Studio.
Если у вас есть Visual Studio, его легко отлаживать:
использовать SQL Profiler чтобы просмотреть, что происходит, когда процедура вызывается и какие параметры передаются.
Я бы использовал комбинацию SQL Profiler и операторов печати внутри вашего оператора SQL. Не уверен в том, как шаг за шагом, но использование профилировщика в сочетании с операторами печати и выбора (при использовании временных таблиц) для просмотра их содержимого по мере запуска proc быстро прольет свет на то, что происходит.
Visual Studio Professional и выпуски Team System позволяют устанавливать точки останова и переходить к хранимым процедурам в SQL Server, что позволяет выполнять отладку хранимых процедур так же просто, как отладка кода приложения. В этом учебнике демонстрируется Непосредственная отладка базы данных и отладка приложений для хранимых процедур.
Введение
К сожалению, хранимые процедуры можно пошагово и отлаживать только с помощью версий Visual Studio Professional и Team Systems. Если вы используете Visual Web Developer или стандартную версию Visual Studio, вы можете ознакомиться с шагами, необходимыми для отладки хранимых процедур, но вы не сможете реплицировать эти действия на компьютере.
Основные понятия отладки SQL Server
SQL Server 2005 предлагает поддержку отладки как для T-SQL, так и для управляемых объектов базы данных. Однако эти объекты можно отлаживать только с помощью выпусков Visual Studio 2005 Professional и Team Systems. В этом учебнике мы рассмотрим отладку объектов базы данных T-SQL. В следующем учебнике рассматривается отладка управляемых объектов базы данных.
Visual Studio может выполнять отладку хранимых процедур на локальном и удаленном экземплярах SQL Server. Локальный экземпляр SQL Server — это тот, который устанавливается на том же компьютере, что и Visual Studio. Если используемая база данных SQL Server не находится на компьютере разработки, она считается удаленным экземпляром. Для этих руководств мы использовали локальные экземпляры SQL Server. Отладка хранимых процедур на удаленном экземпляре SQL Server требует больше этапов настройки, чем при отладке хранимых процедур на локальном экземпляре.
Шаг 1. Непосредственная пошаговая отладка хранимой процедуры
Visual Studio упрощает прямую отладку объекта базы данных. Давайте рассмотрим, как использовать функцию прямой отладки базы данных (DDD) для пошагового перехода к Products_SelectByCategoryID хранимой процедуры в базе данных Northwind. Как следует из названия, Products_SelectByCategoryID возвращает сведения о продукте для определенной категории. Он был создан в учебнике использование существующих хранимых процедур для адаптеров таблиц типизированного набора данных s . Для начала перейдите к обозреватель сервера и разверните узел базы данных Northwind. Затем перейдите в папку хранимых процедур, щелкните правой кнопкой мыши хранимую процедуру Products_SelectByCategoryID и выберите пункт Шаг с хранимой процедурой в контекстном меню. Запустится отладчик.
Так как хранимая процедура Products_SelectByCategoryID предполагает, что @CategoryID входной параметр, нам будет предложено предоставить это значение. Введите 1, чтобы получить сведения о напитки.
Рис. 1. Использование значения 1 для параметра @CategoryID
После предоставления значения для параметра @CategoryID выполняется хранимая процедура. Однако вместо выполнения до завершения отладчик останавливает выполнение на первой инструкции. Обратите внимание на желтую стрелку на поле, указывающую текущее место в хранимой процедуре. Значения параметров можно просматривать и изменять с помощью окно контрольных значений или путем наведения указателя мыши на имя параметра в хранимой процедуре.
Рис. 2. Отладчик остановлен на первом операторе хранимой процедуры (щелкните, чтобы просмотреть изображение с полным размером)
Для пошагового выполнения хранимой процедуры по одной инструкции нажмите кнопку Шаг с обходом на панели инструментов или нажмите клавишу F10. Products_SelectByCategoryID хранимая процедура содержит одну инструкцию SELECT , поэтому нажатие клавиши F10 приведет к пошаговому выполнению одной инструкции и завершению выполнения хранимой процедуры. После завершения хранимой процедуры ее выходные данные отобразятся в окне вывод, и отладчик завершит работу.
Отладка T-SQL происходит на уровне инструкций. невозможно выполнить шаг с заходом в инструкцию SELECT .
Шаг 2. Настройка веб-сайта для отладки приложения
Рис. 3. Установка флажка SQL Server на страницах свойств приложения (щелкните, чтобы просмотреть изображение с полным размером)
Кроме того, необходимо обновить строку подключения к базе данных, используемую приложением, чтобы отключить пул соединений. При закрытии соединения с базой данных соответствующий объект SqlConnection помещается в пул доступных подключений. При установлении соединения с базой данных доступный объект подключения можно получить из пула, а не создавать и устанавливать новое соединение. Такое объединение объектов соединения является улучшением производительности и включено по умолчанию. Однако при отладке мы хотим отключить пулы соединений, так как инфраструктура отладки неправильно восстанавливается при работе с подключением, полученным из пула.
Чтобы отключить пулы подключений, обновите NORTHWNDConnectionString в Web.config , чтобы она включала параметр Pooling=false .
Шаг 3. Добавление точки останова и отладки
Откройте Products_SelectByCategoryID хранимую процедуру и установите точку останова в начале SELECT , щелкнув поле в соответствующем месте или поместив курсор в начало оператора SELECT и нажав клавишу F9. Как показано на рис. 4, точка останова отображается в виде красного круга в поле.
Рис. 4. Установка точки останова в хранимой процедуре Products_SelectByCategoryID (щелкните, чтобы просмотреть изображение с полным размером)
Чтобы объект базы данных SQL можно было отлаживать через клиентское приложение, необходимо настроить для базы данных поддержку отладки приложений. При первом задании точки останова этот параметр должен автоматически переключаться, но рекомендуется выполнить двойную проверку. Щелкните правой кнопкой мыши узел NORTHWND.MDF в обозреватель сервера. Контекстное меню должно включать отмеченный элемент меню с именем Отладка приложения.
Рис. 5. Убедитесь, что включен параметр отладки приложения
Products_SelectByCategoryID хранимая процедура была создана в учебнике использование существующих хранимых процедур для адаптеров TableAdapter типизированного набора данных s . Соответствующая веб-страница (
/AdvancedDAL/ExistingSprocs.aspx ) содержит GridView, в котором отображаются результаты, возвращаемые этой хранимой процедурой. Посетите эту страницу в браузере. При достижении страницы точка останова в Products_SelectByCategoryID хранимой процедуре будет нажата и управление возвращается в Visual Studio. Как и на шаге 1, можно пошагово выполнить инструкции хранимой процедуры s и просмотреть и изменить значения параметров.
Рис. 6. страница ExistingSprocs.aspx изначально отображает напитки (щелкните, чтобы просмотреть изображение с полным размером)
Рис. 7. достигнута точка останова хранимой процедуры (щелкните, чтобы просмотреть изображение с полным размером)
Как показано окно контрольных значений на рис. 7, значение параметра @CategoryID равно 1. Это связано с тем, что страница ExistingSprocs.aspx изначально отображает продукты в категории «напитки», которая имеет CategoryID значение 1. Выберите другую категорию из раскрывающегося списка. Это вызывает обратную передачу и повторно выполняет хранимую процедуру Products_SelectByCategoryID . Точка останова снова будет достигнута, но на этот раз значение параметра @CategoryID s отражает выбранный CategoryID элемент раскрывающегося списка.
Рис. 8. Выбор другой категории из раскрывающегося списка (щелкните, чтобы просмотреть изображение с полным размером)
Рис. 9. параметр @CategoryID отражает категорию, выбранную на веб-странице (щелкните, чтобы просмотреть изображение с полным размером)
Отладка объектов базы данных T-SQL на удаленных экземплярах
Отладка объектов базы данных с помощью Visual Studio довольно проста, если SQL Server экземпляр базы данных находится на том же компьютере, что и Visual Studio. Тем не менее, если SQL Server и Visual Studio находятся на разных компьютерах, то для правильной работы все должно быть достаточно тщательной настройки. Существует две основные задачи, с которыми мы столкнулись:
Для второй задачи требуется, чтобы учетная запись пользователя Windows, используемая для отладки приложения, была действительным именем входа в удаленной базе данных. Однако, скорее всего, учетная запись Windows, которую вы вошли на рабочую станцию, не является допустимым именем входа на SQL Server. Вместо того, чтобы добавлять конкретную учетную запись для входа в SQL Server, лучше выбрать учетную запись пользователя Windows в качестве учетной записи SQL Server отладки. Затем, чтобы выполнить отладку объектов базы данных удаленного экземпляра SQL Server, необходимо запустить Visual Studio, используя учетные данные учетной записи входа Windows.
Пример должен помочь прояснить вещи. Представьте себе, что в домене Windows есть учетная запись Windows с именем SQLDebug . Эту учетную запись необходимо добавить к удаленному экземпляру SQL Server в качестве допустимого имени входа и члена роли sysadmin . Затем, чтобы выполнить отладку удаленного экземпляра SQL Server из Visual Studio, необходимо запустить Visual Studio от имени пользователя SQLDebug . Это можно сделать, выполнив выход из рабочей станции, войдя в систему как SQLDebug , а затем запуская Visual Studio, но более простой подход — войти на рабочую станцию, используя собственные учетные данные, а затем использовать runas.exe для запуска Visual Studio в качестве SQLDebug пользователя. runas.exe позволяет выполнять определенное приложение под ГИП другой учетной записи пользователя. Чтобы запустить Visual Studio в качестве SQLDebug , в командной строке можно ввести следующую инструкцию:
Более подробное описание этого процесса см. в разделе Уильям R. Вон s Путеводитель s Guide to Visual Studio and SQL Server, седьмой выпуск, а также инструкции по заданию разрешений SQL Server для отладки.
Если на компьютере разработчика установлена ОС Windows XP с пакетом обновления 2 (SP2), необходимо настроить брандмауэр подключения к Интернету, чтобы разрешить удаленную отладку. В статье как включить отладку SQL Server 2005 заметок о том, что в этом разделе содержится два шага: (а) на хост-компьютере Visual Studio, необходимо добавить Devenv.exe в список исключений и открыть порт TCP 135. и (б) на удаленном компьютере (SQL), необходимо открыть порт TCP 135 и добавить sqlservr.exe в список исключений. Если политика домена требует, чтобы сетевая связь была выполнена через IPSec, необходимо открыть порты UDP 4500 и UDP 500.
Сводка
Объекты базы данных также можно отлаживать с помощью проектов SQL Server. Мы рассмотрим использование проектов SQL Server и их использование для создания и отладки управляемых объектов базы данных в следующем руководстве.
Отладка кода в Visual Studio происходит довольно просто, если сравнивать это т процесс с другими IDE. Плюс отладчик Visual Studio обладает довольно широкими возможностями и позволяет отлаживать различные технологии, а если имеющихся средств не хватает, то можно воспользоваться дополнениями.
Отладка кода — это один из самых важных процессов. Без отладки в свет не выходит ни одно нормальное приложение. Потому что , независимо от опыта разработчика, код не всегда работает так , как нужно. А иногда и вообще работает совершенно не так. Вот тут как раз и приходит на помощь отладчик, который позволит разобраться , что не так , и найти изъяны. Можно , конечно , много часов провести за самостоятельным выявлением багов, но отладчиком все-таки быстрее и проще.
В то же время отладка кода — это не волшебная палочка, которая быстренько найдет и исправит все недочеты вашего кода. Отладка — это процесс, при котором код пошагово выполняется в некой программе, например , в Visual Studio. В процессе выполнения идет поиск точек, где вы могли допустить ошибку. А вы в это время можете анализировать свой код и вносить необходимые правки для устранения «косяков».
Работа с отладчиком , даже с таким простым , как Visual Studio, требует определенных знаний и понимания , что там внутри происходит. Умение работать с отладчиком вам в любом случае пригодится, если вы хотите связать свою жизнь с разработкой ПО. В этой статье мы ознакомим вас с процессом отладки при помощи Visual Studio.
Отладка кода в Visual Studio
- орфографические ошибки или опечатки,
- неправильно подключенные API,
- неправильное размещение последних корректировок в код,
- и др.
- ошибка компиляции;
- ошибка преобразования типа;
- код не поддерживает синтаксис;
- и др .
Как запустить отладчик Visual Studio
- Запустить саму программу Visual Studio.
- Откр ыть код приложения, который необходимо отладить.
- Потом при помощи нажатия клавиши «F5» запустить режим отладки. Также это можно сделать через меню, если нажать «Отладка», а потом «Начать отладку» .
последовательность исполнения кода;
работу памяти;
значение переменных и др.
Какая информация выводится отладчиком Visual Studio
В заключение
Отладка в Visual Studio дает возможность довольно быстро решить проблемы с вашим кодом. Да, без определенных знаний и понимания запустить и понять отладчик Visual Studio будет нелегко, но с опытом все станет понятнее. В разработке без отладки кода — путь в никуда , п отому что стабильность работы приложения — это залог его качества. И если на самом старте разработк и игнорировать этот процесс, то нет смысла идти дальше.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
В состав Visual Studio входит мощный отладчик, который позволяет расставлять точки остановки ( breakpoints ), запускать программу под этим отладчиком, пошагово её отлаживать. Пошагово можно отлаживать каждый оператор, можно отлаживать, входя в какой-то метод или не входя в метод. В любой момент можно посмотреть значение локальной переменной, вычислить какое-нибудь выражение. Можно посмотреть стек вызовов. Давайте на каком-нибудь примере разберем, как отлаживать код в Visual Studio :
Давайте поставим точку остановки. Это можно сделать двумя путями. Нажать клавишу "F9" , и на той строке, на которой находится курсор, будет точка остановки. Также можно нажать слева от строки на помеченную область:
Теперь можно запустить программу, и на брейкпойнте она остановится. Но остановка произойдёт только в том случае, если вы запустили программу под отладчиком. Самый простой способ запустить программу под отладчиком – это нажать клавишу F5 , а не Ctrl + F5 . Можно также через контекстное меню Debug :
Когда программа дойдёт до брейкпойнта, то её выполнение приостановится. Точка, на которой сейчас происходит выполнение программы, выделяется желтым цветом:
Пока программа приостановлена, можно посмотреть значение переменных. В Autos заносятся переменные автоматически, в Locals находятся локальные переменные, в Watch можно самим что-нибудь набрать (я набрал i*3 и i*5 ) и посмотреть результаты:
После этого можно нажать F5 и выполнение программы пойдёт дальше (или к следующему брейкпойнту, если такой имеется). В нашем случае программа перейдёт к следующему, так как у нас организован цикл. Также можно выполнить отладку по шагам. F10 – выполнить шаг без захода в метод (функцию), F11 – выполнить шаг с заходом в метод (функцию).
Домашнее задание: попробуйте написать программу, которая будет вычислять факториал числа и отладить её.
В данной небольшой статье вы узнали как просто можно отлаживать код в Visual Studio
На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.
Читайте также: