Практическое руководство. Отладка хранимой процедуры SQL CLR

Этот раздел применим к:

Выпуск

Visual Basic

C#

C++

Web Developer

Express

Тема не применяется Тема не применяется Тема не применяется Тема не применяется

Visual Studio Professional, Visual Studio Premium и Visual Studio Ultimate

Тема применяется Тема применяется Тема применяется Тема применяется

Существующую хранимую процедуру SQL CLR SQL Server можно отлаживать с помощью прямой отладки базы данных, так же как процедуру Transact-SQL. Однако, это не будет работать, если вам нужно создавать или изменять процедуру SQL CLR, потому что вам нужно скомпилировать и развернуть его. Эти шаги, которые не существуют для Transact-SQL процедуры. В этом случае необходимо создать проект SQL Server в Visual Studio.

В следующей задаче создается новая хранимая процедура SQL CLR в базе данных AdventureWorks, одной из баз данных, установленных с SQL Server 2005, а затем демонстрируется ее отладка. Создается хранимая процедура, добавляющая новую валюту в таблицу Sales.Currency.

В этом примере акцентируется внимание на отладке в пределах проекта SQL Server. После создания хранимой процедуры можно отлаживать ее с помощью прямой отладки базы данных. Дополнительные сведения см. в разделе How to: Step into an Object Using Server Explorer.

Примечание

Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке в зависимости от текущих настроек или выпуска.Чтобы изменить параметры, выберите в меню Сервис пункт Импорт и экспорт параметров.Дополнительные сведения см. в разделе Работа с параметрами.

Если во время попытки отладки объекта SQL CLR возникает сообщение "Отменено пользователем", необходимо настроить вручную как компьютер, на котором запускается Visual Studio, так и компьютер, на котором запускается SQL Server. Дополнительные сведения см. в разделе Практическое руководство. Настройка компьютеров для включения отладки Transact-SQL и SQL CLR.

Отладка хранимой процедуры SQL CLR

  1. Включите удаленную отладку. Дополнительные сведения см. в разделе Практическое руководство. Настройка удаленной отладки.

  2. Установите в новом проекте SQL Server подключение к образцу базы данных AdventureWorks. Дополнительные сведения см. в разделе How to: Connect to a Database.

  3. С помощью кода из раздела первого нижеследующего примера создайте новую хранимую процедуру с именем InsertCurrency.cs. Дополнительные сведения см. в разделе How to: Develop with the SQL Server Project Type.

  4. Добавьте скрипт, тестирующий хранимую процедуру ее вызовом. В Обозревателе решений щелкните правой кнопкой мыши каталог TestScripts, выберите Добавить тестовый скрипт и вставьте код из раздела второго примера, следующего ниже. Сохраните файл под именем InsertCurrency.sql. Щелкните правой кнопкой мыши имя файла и выберите Использовать как скрипт отладки по умолчанию.

  5. Установите в InsertCurrency.cs точки останова, а затем в меню Отладка нажмите кнопку Пуск для компиляции, развертывания и модульного теста проекта. Появление указателя инструкций, имеющего вид желтой стрелки на точке останова, означает, что выполняется отладка хранимой процедуры.

  6. Попробуйте выполнить другие функции отладки.

    1. Откройте окно Локальные переменные и в меню Отладка щелкните Шаг с заходом для перехода на следующую строку в хранимой процедуре. Обратите внимание, что значение переменной @mynvarchar изменилось в окне Локальные переменные, и это значение теперь выделено красным цветом, что указывает на то, что значение изменено. Дополнительные сведения см. в разделе Использование окна "Локальные переменные".

      Примечание

      Сервер может не отражать изменения значений переменных в окнах отладчика.Дополнительные сведения см. в разделе Ограничения по отладке SQL.

    2. Откройте окно Контрольные значения. В Текстовом редакторе перетащите переменную InsertCurrencyCommand в любое место окна Контрольные значения.

      Теперь переменная добавлена в список контролируемых переменных. Дополнительные сведения см. в разделе Практическое руководство. Использование окон переменных отладчика.

      Примечание В окне Контрольные значения можно также редактировать значения переменных.

    3. В текстовом редакторе щелкните правой кнопкой строку InsertCurrencyCommand.ExecuteNonQuery и выберите в контекстном меню пункт Вставить точку останова.

    4. В меню Отладка щелкните Продолжить, и отладчик запустит код до новой точки останова.

  7. Чтобы закончить отладку хранимой процедуры, снова выберите Продолжить.

    В окне Выходные данные появится сообщение о том, что хранимая процедура была успешно развернута, а результат выполнения команд будет отображен в файле InsertCurrency.sql.

Пример

Замените шаблон хранимой процедуры на этот код.

using System;
using System.Data;
using System.Data.Sql;
using System.Data.SqlServer;
using System.Data.SqlTypes;

public partial class StoredProcedures
{
    [SqlProcedure]
    public static void InsertCurrency(SqlString currencyCode, 
                                               SqlString name)
    {
        using(SqlConnection conn = new SqlConnection("context connection=true")) {
        SqlCommand cmd = new SqlCommand([your SQL statement], conn);
        }
        InsertCurrencyCommand.CommandText = "insert Sales.Currency"
                     + " (CurrencyCode, Name, ModifiedDate) values('" 
                     + currencyCode.ToString() + "', '" 
                     + name.ToString() + "', '" 
                     + DateTime.Now.ToString() + "')";
        InsertCurrencyCommand.ExecuteNonQuery();
    }
}

Это тестовый скрипт, используемый для выполнения хранимой процедуры.

- Delete any row that might exist with a key value
- that matches the one we are going to insert
DELETE Sales.Currency
WHERE CurrencyCode = 'eee'
EXEC InsertCurrency 'eee', 'MyCurr4'
SELECT * FROM Sales.Currency WHERE CurrencyCode = 'eee'

См. также

Задачи

Практическое руководство. Создание и запуск хранимой процедуры SQL Server при помощи интеграции со средой CLR

Другие ресурсы

Практическое руководство. Настройка компьютеров для включения отладки Transact-SQL и SQL CLR