Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения:SQL Server
SQL Server обеспечивает поддержку отладки объектов Transact-SQL и среды CLR в базе данных. Ключевыми аспектами отладки в SQL Server являются простота настройки и использования, а также интеграция отладчика SQL Server с отладчиком Microsoft Visual Studio. Более того, процесс отладки охватывает код на всех применяемых языках: Пользователи могут легко переходить к объектам СРЕДЫ CLR из Transact-SQL и наоборот.
Отладчик Transact-SQL в SQL Server Management Studio не может использоваться для отладки объектов управляемой базы данных, но вы можете отлаживать объекты с помощью отладчиков в Visual Studio. Отладка объектов управляемой базы данных в Visual Studio поддерживает все общие функции отладки, такие как шаг в и шаг через инструкции в подпрограммах, выполняемых на сервере. Отладчики могут задавать точки останова, просматривать стек вызова, проверять значения переменных и изменять значения переменных во время отладки.
Отладка разрешений и ограничений
Отладка — это операция с высоким уровнем привилегий, поэтому в SQL Server разрешены только члены предопределенных ролей сервера sysadmin .
При отладке применяются следующие ограничения.
При отладке процедур CLR можно использовать одновременно только один экземпляр отладчика. Это ограничение применяется, так как все выполнение кода CLR зависает при достижении точки останова, и выполнение не продолжается до тех пор, пока отладчик не переходит из точки останова. Однако вы можете продолжить отладку Transact-SQL в других подключениях. Хотя Transact-SQL отладка не замораживает другие выполнения на сервере, это может привести к тому, что другие подключения будут ожидать из-за удержания блокировки.
Существующие подключения нельзя отлаживать, только новые подключения, так как SQL Server требует сведений о среде клиента и отладчика, прежде чем подключиться.
Поэтому мы рекомендуем отладить код Transact-SQL и среды CLR на тестовом сервере, а не на рабочем сервере.
Обзор
Отладка в SQL Server следует модели для каждого подключения. Отладчик может обнаруживать и отлаживать действия только на соединении клиента, к которому он присоединяется. Так как функциональные возможности отладчика не ограничены типом подключения, можно отладить как табличный поток данных (TDS), так и HTTP-подключения. Однако SQL Server не разрешает отладку существующих подключений. Процесс отладки поддерживает общие функции отладки внутри процедур, выполняемых на сервере. Взаимодействие между отладчиком и SQL Server происходит через распределенную объектную модель компонента (COM).
Дополнительные сведения и сценарии отладки управляемых хранимых процедур, функций, триггеров, определяемых пользователем типов и агрегатов см . в документации по Sql Server CLR Integration Database Отладка в документации по Visual Studio.
Сетевой протокол TCP/IP должен быть включен в экземпляре SQL Server, чтобы использовать Visual Studio для удаленной разработки, отладки и разработки. Дополнительные сведения о включении протокола TCP/IP на сервере см. в разделе "Настройка клиентских протоколов".
Шаги отладки
Выполните следующие действия для отладки объекта базы данных CLR в Microsoft Visual Studio:
Откройте Microsoft Visual Studio и создайте проект SQL Server. Вы можете использовать экземпляр Sql LocalDB, который поставляется с Visual Studio.
Создайте новый тип СРЕДЫ CLR SQL (C#):
- В Обозреватель решений щелкните проект правой кнопкой мыши и выберите "Добавить", "Создать элемент"..
- В окне добавления нового элемента выберите хранимую процедуру SQL CLR C#, определяемую пользователем функцию SQL CLR C#, определяемую пользователем тип SQL CLR C#, триггер CLR C# SQL CLR, агрегат CLR C# ИЛИ класс.
- Укажите имя исходного файла нового типа и нажмите кнопку "Добавить".
Добавьте в текстовый редактор код для нового типа. Пример кода для примера хранимой процедуры см. в следующем разделе "Пример" в этой статье.
Добавьте скрипт, который проверяет тип:
- В Обозреватель решений щелкните правой кнопкой мыши узел проекта и выберите "Добавить", "Скрипт...".
-
В окне "Добавить новый элемент" выберите скрипт (не в сборке) и укажите имя, например
Test.sql. Нажмите кнопку Добавить. - В Обозреватель решений дважды щелкните
Test.sqlузел, чтобы открыть исходный файл скрипта по умолчанию. - Добавьте тестовый скрипт (который вызывает код для отладки) в текстовый редактор. См. пример в следующем разделе для примера скрипта.
Поместите одну или несколько точек останова в исходный код. Щелкните правой кнопкой мыши строку кода в текстовом редакторе функции или подпрограммы, которую требуется выполнить отладку. Выберите точку останова, вставить точку останова. Точка останова добавится, а строка кода будет выделена красным цветом.
В меню отладки выберите "Начать отладку", чтобы скомпилировать, развернуть и протестировать проект. Тестовый скрипт
Test.sqlвыполняется и вызывается объект управляемой базы данных.Когда желтая стрелка (обозначающая указатель инструкции) отображается в точке останова, выполнение кода приостанавливается. Затем можно выполнить отладку объекта управляемой базы данных:
- Чтобы перейти к следующей строке кода, используйте шаг сверху из меню отладки .
- Используйте окно "Локальные" для наблюдения за состоянием объектов, выделенных указателем инструкции.
- Добавьте переменные в окно "Контроль ". Состояние отслеживаемых переменных можно наблюдать во время сеанса отладки, даже если переменная не находится в строке кода, выделенной указателем инструкции.
- Выберите "Продолжить " в меню отладки , чтобы перейти к следующей точке останова или завершить выполнение подпрограммы, если нет больше точек останова.
Пример кода
В следующем примере C# возвращает вызывающему версию SQL Server.
using System.Data.SqlClient;
using Microsoft.SqlServer.Server;
public class StoredProcedures
{
[Microsoft.SqlServer.Server.SqlProcedure]
public static void GetVersion()
{
using (var connection = new SqlConnection("context connection=true"))
{
connection.Open();
var command = new SqlCommand("select @@version", connection);
SqlContext.Pipe.ExecuteAndSend(command);
}
}
}
Пример тестового скрипта
В следующем тестовом скрипте показано, как вызвать GetVersion хранимую процедуру, определенную в предыдущем примере.
EXECUTE GetVersion;