Пошаговое руководство. Отладка CLR-триггера SQL
Обновлен: Ноябрь 2007
Этот раздел применим к:
Выпуск |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
||||
Standard |
||||
Pro и Team |
Обозначения:
Применяется |
|
Неприменимо |
|
Команда или команды скрыты по умолчанию. |
Этот пример описывает отладку CLR-триггера SQL. В разделе используется таблица Contact учебной базы данных AdventureWorks, одной из баз данных, которые устанавливаются вместе с SQL Server 2005. В примере в таблице Contact создается новый CLR-триггер вставки и выполняется шаг с заходом в него.
Примечание. |
---|
Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке в зависимости от текущих параметров или выпуска. Для изменения параметров в меню Сервис выберите команду Импорт и экспорт параметров. Дополнительные сведения см. в разделе Параметры Visual Studio. |
Отладка CLR-триггера SQL
В новом проекте SQL Server установите соединение с базой данных AdventureWorks. Дополнительные сведения см. в разделе Практическое руководство. Подключение к базе данных.
Создайте новый триггер с использованием кода из первого примера ниже и назовите его iContact.cs. Дополнительные сведения см. в разделе Практическое руководство. Разработка с помощью типа проекта SQL Server.
Добавьте сценарий, который тестирует триггер, заставляя его срабатывать. В обозревателе решений щелкните правой кнопкой мыши каталог Сценарии тестирования, выберите пункт Добавить сценарий тестирования и вставьте код из второго примера в нижеприведенном разделе. Сохраните файл, дав ему имя truContact.sql. Щелкните правой кнопкой мыши имя файла и выберите Использовать как сценарий отладки по умолчанию.
Установите точки останова в iContact.cs и выберите в меню Отладка команду Запуск, чтобы скомпилировать, развернуть и провести модульный тест проекта. Появление указателя инструкций, имеющего вид желтой стрелки, на точке останова означает, что выполняется отладка триггера.
Попробуйте использовать различные функции отладки.
Перейдите к оператору, создающему экземпляр SqlTriggerContext.
Откройте окно Локальные. Обратите внимание, что можно открыть переменную triggContext, которая относится к классу SqlTriggerContext, и исследовать ее члены. Дополнительные сведения см. в разделе Практическое руководство. Использование окон переменных отладчика.
Примечание. Сервер может не отражать изменение значений переменных в окнах отладчика. Дополнительные сведения см. в разделе Ограничения по отладке SQL.
В меню Отладка выберите Шаг с заходом, чтобы перейти на одну строку внутрь хранимой процедуры. Обратите внимание, что при выполнении для значения переменнойsqlP был создан экземпляр типаSqlPipe.
Откройте окно Контрольные значения. Перетащите переменную sqlP в любое место в окне Контрольные значения. Теперь переменная добавлена в список контролируемых переменных. Дополнительные сведения см. в разделе Практическое руководство. Использование окон переменных отладчика.
Примечание. Значения переменных в окне Контрольные значения также можно изменять.
В текстовом редакторе щелкните правой кнопкой мыши последнюю строку и выберите команду Вставить точку останова.
В меню Отладка выберите Продолжить, и отладчик выполнит код до новой точки останова.
Чтобы закончить отладку триггера, снова выберите Продолжить. В окне Вывод появится сообщение о том, что триггер был успешно развернут, и будет выведен результат выполнения команд в файле truContact.sql.
Пример
Это код, необходимый для создания триггера, используемого в этом примере.
using System;
using System.Data;
using System.Data.Sql;
using Microsoft.SqlServer.Server;
public partial class Triggers
{
// Enter existing table or view for the target and uncomment the attribute line.
[Microsoft.SqlServer.Server.SqlTrigger (Name="Trigger1", Target="primes", Event="FOR UPDATE")]
public static void Trigger1()
{
SqlTriggerContext triggContext = SqlContext.TriggerContext;
SqlPipe sqlP = SqlContext.Pipe;
sqlP.Send("primes inserted!");
}
}
Это сценарий тестирования, который заставит триггер срабатывать.
UPDATE Person.Contact SET MiddleName = 'A' WHERE ContactID = 8
См. также
Задачи
Практическое руководство. Создание и запуск триггера CLR SQL Server