Практическое руководство. Отладка хранимой процедуры 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. После создания хранимой процедуры можно отлаживать ее с помощью прямой отладки базы данных. Дополнительные сведения см. в разделе Практическое руководство. Пошаговая отладка объекта с использованием обозревателя сервера.
Примечание. |
---|
Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке, в зависимости от текущих параметров или выпуска. Чтобы изменить параметры, в меню Сервис выберите пункт Параметры импорта и экспорта. Дополнительные сведения см. в разделе Параметры Visual Studio. |
Отладка хранимой процедуры SQL CLR
Установите в новом проекте SQL Server подключение к образцу базы данных AdventureWorks. Дополнительные сведения см. в разделе Практическое руководство. Подключение к базе данных.
С помощью кода из раздела первого нижеследующего примера создайте новую хранимую процедуру с именем InsertCurrency.cs. Дополнительные сведения см. в разделе Практическое руководство. Разработка с помощью типа проекта SQL Server.
Добавьте сценарий, тестирующий хранимую процедуру ее вызовом. В Обозревателе решений щелкните правой кнопкой мыши каталог TestScripts, выберите Добавить тестовый сценарий и вставьте код из раздела второго примера, следующего ниже. Сохраните файл под именем InsertCurrency.sql. Щелкните правой кнопкой мыши имя файла и выберите Использовать как сценарий отладки по умолчанию.
Установите в InsertCurrency.cs точки останова, а затем в меню Отладка нажмите кнопку Пуск для компиляции, развертывания и модульного теста проекта. Появление указателя инструкций, имеющего вид желтой стрелки на точке останова, означает, что выполняется отладка хранимой процедуры.
Попробуйте выполнить другие функции отладки.
Откройте окно Локальные переменные и в меню Отладка щелкните Шаг с заходом для перехода на следующую строку в хранимой процедуре. Обратите внимание, что значение переменной @mynvarchar изменилось в окне Локальные переменные, и это значение теперь выделено красным цветом, что указывает на то, что значение изменено. Дополнительные сведения см. в разделе Использование окна "Локальные переменные".
Примечание. Сервер может не отражать изменения значений переменных в окнах отладчика. Дополнительные сведения см. в разделе Ограничения по отладке SQL.
Откройте окно Контрольные значения. В Текстовом редакторе перетащите переменную InsertCurrencyCommand в любое место окна Контрольные значения.
Теперь переменная добавлена в список контролируемых переменных. Дополнительные сведения см. в разделе Практическое руководство. Использование окон переменных отладчика.
Примечание В окне Контрольные значения можно также редактировать значения переменных.
В текстовом редакторе щелкните правой кнопкой строку InsertCurrencyCommand.ExecuteNonQuery и выберите в контекстном меню пункт Вставить точку останова.
В меню Отладка щелкните Продолжить, и отладчик запустит код до новой точки останова.
Чтобы закончить отладку хранимой процедуры, снова выберите Продолжить.
В окне Выходные данные появится сообщение о том, что хранимая процедура была успешно развернута, а результат выполнения команд будет отображен в файле 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