Практическое руководство. Отладка хранимой процедуры 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
Включите удаленную отладку. Дополнительные сведения см. в разделе Практическое руководство. Настройка удаленной отладки.
Установите в новом проекте SQL Server подключение к образцу базы данных AdventureWorks. Дополнительные сведения см. в разделе How to: Connect to a Database.
С помощью кода из раздела первого нижеследующего примера создайте новую хранимую процедуру с именем InsertCurrency.cs. Дополнительные сведения см. в разделе How to: Develop with the SQL Server Project Type.
Добавьте скрипт, тестирующий хранимую процедуру ее вызовом. В Обозревателе решений щелкните правой кнопкой мыши каталог 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'
См. также
Задачи
Другие ресурсы
Практическое руководство. Настройка компьютеров для включения отладки Transact-SQL и SQL CLR