Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Выпуски Visual Studio Professional и Team System позволяют задавать точки останова и выполнять пошаговую отладку хранимых процедур в SQL Server, что делает отладку хранимых процедур такой же простой, как отладку кода приложений. В этом руководстве демонстрируется прямая отладка базы данных и отладка приложений хранимых процедур.
Введение
Visual Studio предоставляет широкий интерфейс отладки. С помощью нескольких нажатий клавиш или щелчков мыши можно использовать точки останова для остановки выполнения программы и изучения его состояния и потока управления. Наряду с кодом приложения отладки Visual Studio предлагает поддержку отладки хранимых процедур из SQL Server. Точно так же, как точки останова можно задать в ASP.NET класса связанного с кодом или класса уровня бизнес-логики, их также можно разместить в хранимые процедуры.
В этом руководстве мы рассмотрим шаги по выполнению хранимых процедур из обозревателя серверов в Visual Studio, а также о том, как задать точки останова, которые возникают при вызове хранимой процедуры из запущенного приложения ASP.NET.
Замечание
К сожалению, хранимые процедуры можно входить и отлаживать только в профессиональной и Team System версиях Visual Studio. Если вы используете Visual Web Developer или стандартную версию Visual Studio, вы можете ознакомиться с инструкциями, необходимыми для отладки хранимых процедур, но вы не сможете реплицировать эти действия на компьютере.
Основные понятия отладки SQL Server
Microsoft SQL Server 2005 был разработан для обеспечения интеграции со средой CLR, которая является средой выполнения, используемой всеми сборками .NET. Следовательно, SQL Server 2005 поддерживает управляемые объекты базы данных. То есть можно создавать объекты базы данных, такие как хранимые процедуры и User-Defined Функции (ОПРЕДЕЛ) в качестве методов в классе Visual Basic. Это позволяет этим хранимым процедурам и пользовательским функциям использовать функциональность в .NET Framework и из ваших собственных пользовательских классов. Конечно, SQL Server 2005 также обеспечивает поддержку объектов базы данных T-SQL.
SQL Server 2005 обеспечивает поддержку отладки как для объектов T-SQL, так и для управляемых баз данных. Однако эти объекты можно отлаживать только с помощью выпусков Visual Studio 2005 Professional и Team Systems. В этом руководстве мы рассмотрим отладку объектов базы данных T-SQL. В следующем руководстве рассматривается отладка объектов управляемой базы данных.
Запись блога SQL Server 2005 "Обзор отладки T-SQL и CLR" от команды интеграции CLR SQL Server 2005 выделяет три способа отладки объектов SQL Server 2005 из Visual Studio:
- Прямая отладка базы данных (DDD) — из обозревателя серверов мы можем перейти к любому объекту базы данных T-SQL, например, к хранимым процедурам и определяемым пользователем функциям. Мы рассмотрим DDD на шаге 1.
- Отладка приложения — мы можем задать точки останова в объекте базы данных, а затем запустить приложение ASP.NET. При выполнении объекта базы данных точка останова будет достигнута, и контроль будет передан отладчику. Обратите внимание, что при отладке приложения невозможно перейти к объекту базы данных из кода приложения. Мы должны явно задать точки останова в тех хранимых процедурах или определяемых пользователем функциях, где нужно остановить отладчик. Отладка приложений рассматривается начиная с шага 2.
- Отладка из проекта SQL Server Project — издания Visual Studio Professional и Team Systems включают тип проекта SQL Server, который обычно используется для создания управляемых объектов базы данных. Мы рассмотрим использование проектов SQL Server и отладку их содержимого в следующем руководстве.
Visual Studio может выполнять отладку хранимых процедур на локальных и удаленных экземплярах SQL Server. Локальный экземпляр SQL Server — это экземпляр, установленный на том же компьютере, что и Visual Studio. Если используемая база данных SQL Server не находится на компьютере разработки, то это считается удаленным экземпляром. В этих руководствах мы использовали локальные экземпляры SQL Server. Для отладки хранимых процедур на удаленном экземпляре SQL Server требуется больше шагов конфигурации, чем при отладке хранимых процедур на локальном экземпляре.
Если вы используете локальный экземпляр SQL Server, вы можете начать с шага 1 и начать работу с этим руководством до конца. Однако если вы используете удаленный экземпляр SQL Server, сначала необходимо убедиться, что при отладке вы вошли на компьютер разработки с учетной записью пользователя Windows с именем входа SQL Server в удаленном экземпляре. Кроме того, имя для входа в базу данных и имя входа, используемое для подключения к базе данных из приложения ASP.NET, находящегося в работе, должны быть членами роли sysadmin
. Дополнительные сведения о настройке Visual Studio и SQL Server для отладки удаленного экземпляра см. в разделе "Отладка объектов базы данных T-SQL в удаленных экземплярах" в конце этого руководства.
Наконец, понять, что поддержка отладки для объектов базы данных T-SQL не является столь же многофункциональной, как поддержка отладки для приложений .NET. Например, условия и фильтры останова не поддерживаются, доступно только подмножество окон отладки, нельзя использовать функцию "Редактирование и продолжение", окно "Немедленный результат" становится бесполезным и т. д. Дополнительные сведения см. в статьях об ограничениях команд и компонентов отладчика .
Шаг 1: Прямой вход в хранимую процедуру
Visual Studio упрощает прямую отладку объекта базы данных. Давайте рассмотрим, как использовать функцию отладки прямой базы данных (DDD) для перехода к Products_SelectByCategoryID
хранимой процедуре в базе данных Northwind. Как следует из названия, Products_SelectByCategoryID
возвращает сведения о продукте для определенной категории; он был создан в руководстве По использованию существующих хранимых процедур для типизированных наборов данных и адаптеров таблиц. Сначала перейдите в обозреватель серверов и разверните узел базы данных Northwind. Затем перейдите в папку хранимых процедур, щелкните правой кнопкой мыши на хранимой процедуре, обозначенной как Products_SelectByCategoryID
, и выберите пункт "Переход к хранимой процедуре" в контекстном меню. Это запустит отладчик.
Так как хранимая Products_SelectByCategoryID
процедура ожидает входной @CategoryID
параметр, мы просим предоставить это значение. Введите 1, которое вернет информацию о напитках.
@CategoryID параметр" />
Рис. 1. Использование значения 1 для @CategoryID
параметра
После указания значения параметра @CategoryID
выполняется хранимая процедура. Вместо выполнения до завершения, однако отладчик останавливает выполнение первой инструкции. Обратите внимание на желтую стрелку в поле, указывающую текущее расположение в хранимой процедуре. Вы можете просматривать и изменять значения параметров в окне "Контроль" или наведите указатель мыши на имя параметра в хранимой процедуре.
Рис. 2. Отладчик остановился на первой инструкции хранимой процедуры (щелкните, чтобы просмотреть изображение полного размера)
Чтобы выполнить пошаговое выполнение хранимой процедуры по одному оператору за раз, нажмите кнопку "Шаг поверх" на панели инструментов или нажмите клавишу F10. Хранимая Products_SelectByCategoryID
процедура содержит одну инструкцию, поэтому, нажимая клавишу F10, вы выполните одну SELECT
инструкцию и завершите выполнение хранимой процедуры. После завершения хранимой процедуры его выходные данные будут отображаться в окне вывода, а отладчик завершит работу.
Замечание
Отладка T-SQL выполняется на уровне инструкции; вы не можете войти в инструкцию SELECT
.
Шаг 2. Настройка веб-сайта для отладки приложений
При отладке хранимой процедуры непосредственно из обозревателя серверов удобно, однако во многих случаях нас больше интересует отладка хранимой процедуры, когда она вызывается из приложения ASP.NET. Мы можем добавить точки останова в хранимую процедуру из Visual Studio, а затем начать отладку приложения ASP.NET. Когда хранимая процедура с точками останова вызывается из приложения, выполнение остановится в точке останова, и мы можем просматривать и изменять значения параметров хранимой процедуры и выполнять шаги по его инструкциям, как и в шаге 1.
Прежде чем начать отладку хранимых процедур из приложения, необходимо указать веб-приложению ASP.NET интегрироваться с отладчиком SQL Server. Начните, щелкнув правой кнопкой мыши имя веб-сайта в обозревателе решений (ASPNET_Data_Tutorial_74_VB
). Выберите параметр "Страницы свойств" в контекстном меню, выберите элемент "Параметры запуска" слева и установите флажок SQL Server в разделе "Отладчики" (см. рис. 3).
Рис. 3. Установите флажок SQL Server на страницах свойств приложения (щелкните, чтобы просмотреть изображение полного размера)
Кроме того, необходимо обновить строку подключения к базе данных, используемую приложением, чтобы отключить пул подключений. При закрытии подключения к базе данных соответствующий SqlConnection
объект помещается в пул доступных подключений. При установке подключения к базе данных доступный объект подключения можно извлечь из этого пула, а не создать и установить новое подключение. Этот пул объектов подключения является улучшением производительности и включен по умолчанию. Однако при отладке мы хотим отключить пул подключений, так как инфраструктура отладки не корректно восстанавливается при работе с подключением, взятым из пула.
Чтобы отключить пул подключений, обновите NORTHWNDConnectionString
в Web.config
, включив параметр Pooling=false
.
<connectionStrings>
<add name="NORTHWNDConnectionString" connectionString=
"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\NORTHWND.MDF;
Integrated Security=True;User Instance=True;Pooling=false"
providerName="System.Data.SqlClient" />
</connectionStrings>
Замечание
После завершения отладки SQL Server с помощью приложения ASP.NET обязательно восстановите пул подключений, удалив Pooling
параметр из строки подключения (или установив для него значение Pooling=true
).
На этом этапе приложение ASP.NET было настроено, чтобы разрешить Visual Studio отлаживать объекты базы данных SQL Server при вызове через веб-приложение. Все, что остается сейчас, — добавить точку останова в хранимую процедуру и начать отладку!
Шаг 3. Добавление точки останова и отладки
Откройте Products_SelectByCategoryID
хранимую процедуру и установите точку останова в начале SELECT
инструкции, щелкнув в поле в соответствующем месте или поместив курсор в начало SELECT
инструкции и нажав клавишу F9. Как показано на рисунке 4, точка останова отображается как красный круг в поле.
Рис. 4. Установка точки останова Products_SelectByCategoryID
в хранимой процедуре (щелкните, чтобы просмотреть изображение полного размера)
Чтобы объект базы данных SQL был отлажен с помощью клиентского приложения, необходимо настроить базу данных для поддержки отладки приложений. При первом задании точки останова этот параметр должен автоматически быть включен, но рекомендуется дважды проверить. Щелкните правой кнопкой мыши на узле NORTHWND.MDF
в обозревателе серверов. Контекстное меню должно содержать флажок меню с именем "Отладка приложения".
Рис. 5. Убедитесь, что включен параметр отладки приложения
Если установлен набор точек останова и включен параметр отладки приложений, мы готовы выполнить отладку хранимой процедуры при вызове из приложения ASP.NET. Запустите отладчик, перейдя в меню отладки и выбрав "Начать отладку", нажав клавишу F5 или щелкнув зеленый значок воспроизведения на панели инструментов. Это запустит отладчик и запустит веб-сайт.
Хранимая Products_SelectByCategoryID
процедура была создана в руководстве по использованию существующих хранимых процедур для typed DataSet s TableAdapters . Соответствующая веб-страница (~/AdvancedDAL/ExistingSprocs.aspx
) содержит элемент GridView, отображающий результаты, возвращаемые этой хранимой процедурой. Посетите эту страницу через браузер. При переходе на страницу управление будет передано Visual Studio, и точка останова в Products_SelectByCategoryID
хранимой процедуре будет достигнута. Как и в шаге 1, можно выполнить инструкции хранимой процедуры и просмотреть и изменить значения параметров.
Рис. 6. СтраницаExistingSprocs.aspx
первоначально отображает напитки (щелкните, чтобы просмотреть изображение полного размера)
Рис. 7. Достигнута точка останова хранимой процедуры (щелкните, чтобы просмотреть изображение полного размера)
Как показано в окне "Контрольные значения" на рис. 7, значение @CategoryID
параметра равно 1. Это связано с тем, что ExistingSprocs.aspx
страница изначально отображает продукты в категории напитков, которая имеет CategoryID
значение 1. Выберите другую категорию из раскрывающегося списка. Это приводит к обратной отправке и повторному выполнению хранимой Products_SelectByCategoryID
процедуры. Точка останова снова достигнута, но на этот раз @CategoryID
значение параметра отражает выбранный раскрывающийся список элементов CategoryID
.
Рис. 8. Выберите другую категорию из списка Drop-Down (щелкните, чтобы просмотреть изображение полного размера)
@CategoryID параметр отражает категорию, выбранную на веб-странице" />
Рис. 9. Параметр @CategoryID
отражает категорию, выбранную на веб-странице (щелкните, чтобы просмотреть изображение полного размера)
Замечание
Если при посещении страницы Products_SelectByCategoryID
не срабатывает точка останова в хранимой процедуре ExistingSprocs.aspx
, убедитесь, что флажок "SQL Server" установлен в разделе "Отладчики" на странице свойств приложения ASP.NET, что пул подключений отключен и что опция "Отладка приложений базы данных" включена. Если у вас по-прежнему возникли проблемы, перезапустите Visual Studio и повторите попытку.
Отладка объектов базы данных T-SQL в удаленных экземплярах
Отладка объектов базы данных с помощью Visual Studio довольно проста, если экземпляр базы данных SQL Server находится на том же компьютере, что и Visual Studio. Однако если SQL Server и Visual Studio находятся на разных компьютерах, то для правильной работы необходимо выполнить определенную тщательную настройку. Существует две основные задачи, с которыми мы сталкиваемся:
- Убедитесь, что имя входа, используемое для подключения к базе данных через ADO.NET принадлежит
sysadmin
роли. - Убедитесь, что учетная запись пользователя Windows, используемая Visual Studio на компьютере разработки, является допустимой учетной записью входа SQL Server, которая принадлежит
sysadmin
роли.
Первый шаг относительно простой. Сначала определите учетную запись пользователя, используемую для подключения к базе данных из приложения ASP.NET, а затем из SQL Server Management Studio добавьте учетную запись входа в sysadmin
роль.
Вторая задача требует, чтобы учетная запись пользователя 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
, можно ввести следующую инструкцию в командной строке:
runas.exe /user:SQLDebug "%PROGRAMFILES%\Microsoft Visual Studio 8\Common7\IDE\devenv.exe"
Более подробное описание этого процесса см. в книге Уильяма Р. Вагна «Путеводитель по Visual Studio и SQL Server, Седьмое издание».
Замечание
Если компьютер разработки работает под управлением Windows XP с пакетом обновления 2 (SP2), необходимо настроить брандмауэр подключения к Интернету, чтобы разрешить удаленную отладку.
Статья «Практическое руководство: включение отладки SQL Server 2005» включает в себя два шага: (a) На хост-компьютере Visual Studio необходимо добавить Devenv.exe
в список исключений и открыть порт TCP 135; (b) На удаленном (SQL) компьютере необходимо открыть порт TCP 135 и добавить sqlservr.exe
в список исключений. Если для политики домена требуется выполнить сетевое взаимодействие через IPSec, необходимо открыть порты UDP 4500 и UDP 500.
Сводка
Помимо поддержки отладки кода приложения .NET, Visual Studio также предоставляет различные варианты отладки для SQL Server 2005. В этом руководстве мы рассмотрели два из этих параметров: прямая отладка базы данных и отладка приложений. Чтобы напрямую отлаживать объект базы данных T-SQL, найдите объект через обозреватель серверов, а затем щелкните его правой кнопкой мыши и выберите войти в. Это запускает отладчик и останавливается на первой инструкции в объекте базы данных, в какой момент можно выполнить инструкции объекта и просмотреть и изменить значения параметров. На шаге 1 мы использовали этот подход, чтобы войти в хранимую Products_SelectByCategoryID
процедуру.
Отладка приложения позволяет устанавливать точки останова непосредственно в объектах базы данных. Когда объект базы данных с точками останова вызывается из клиентского приложения (например, веб-приложения ASP.NET), программа останавливается, когда отладчик берет управление. Отладка приложений полезна, так как она более четко показывает, какое действие приложения приводит к вызову определенного объекта базы данных. Однако для нее требуется немного больше конфигурации и настройки, чем отладка прямой базы данных.
Объекты базы данных также можно отлаживать с помощью проектов SQL Server. Мы рассмотрим использование проектов SQL Server и их использование для создания и отладки объектов управляемой базы данных в следующем руководстве.
Счастливое программирование!
Сведения о авторе
Скотт Митчелл, автор семи книг ASP/ASP.NET и основатель 4GuysFromRolla.com, работает с технологиями Microsoft Web с 1998 года. Скотт работает независимым консультантом, тренером и писателем. Его последняя книга — Sams Teach Yourself ASP.NET 2.0 за 24 часа. С ним можно связаться по адресу mitchell@4GuysFromRolla.com.