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

Обновлен: Ноябрь 2007

Этот раздел применим для следующих версий.

Выпуск

Visual Basic

C#

C++

Web Developer

Экспресс-выпуск

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

Standard

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

Pro и Team

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

Условные обозначения:

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

Применимо

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

Неприменимо

Тема применяется, но команда по умолчанию сокрыта

Команда или команды по умолчанию скрыты.

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

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

В этом примере акцентируется внимание на отладке в пределах проекта SQL Server. После создания хранимой процедуры можно отлаживать ее с помощью прямой отладки базы данных. Дополнительные сведения см. в разделе Практическое руководство. Пошаговая отладка объекта с использованием обозревателя сервера.

ms165051.alert_note(ru-ru,VS.90).gifПримечание.

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

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

  1. Установите в новом проекте SQL Server подключение к образцу базы данных AdventureWorks. Дополнительные сведения см. в разделе Практическое руководство. Подключение к базе данных.

  2. С помощью кода из раздела первого нижеследующего примера создайте новую хранимую процедуру с именем InsertCurrency.cs. Дополнительные сведения см. в разделе Практическое руководство. Разработка с помощью типа проекта SQL Server.

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

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

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

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

      ms165051.alert_note(ru-ru,VS.90).gifПримечание.

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

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

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

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

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

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

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

    В окне Выходные данные появится сообщение о том, что хранимая процедура была успешно развернута, а результат выполнения команд будет отображен в файле 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

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

Отладка баз данных SQL в среде CLR