Пошаговое руководство. Отладка определенной пользователем скалярной CLR-функции SQL

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

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

Выпуск

Visual Basic

C#

C++

Web Developer

Express

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

Standard

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

Pro и Team

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

Обозначения:

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

Применяется

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

Неприменимо

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

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

В этом примере демонстрируется отладка определяемой пользователем (UDF) CLR-функции SQL. В нем в учебной базе данных AdventureWorks создается новая определяемая пользователем CLR-функция SQL.

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

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

Отладка определяемой пользователем скалярной CLR-функции SQL

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

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

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

  4. Поместите точку останова в OrderCount.csна строке, в которой создается экземпляр SqlCommand, затем в меню Отладка выберите команду Запуск, чтобы скомпилировать, развернуть и провести модульное тестирование проекта. Появление указателя инструкций, имеющего вид желтой стрелки, на точке останова означает, что выполняется отладка функции.

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

    1. Перейдите через оператор, создающий экземпляр SqlCommand, с помощью команды Шаг с заходом в меню Отладка.

    2. В окне Локальные откройте переменную sqlComm, которая относится к классу SqlCommand, и исследуйте ее члены.

    3. В меню Отладка выберите команду Шаг с заходом, чтобы зайти на одну строку в функцию. Обратите внимание, что был создан экземпляр члена sqlComm.CommandText.

    4. В текстовом редакторе перетащите sqlComm в любое место в окне Контрольные значения. Теперь переменная добавлена в список контролируемых переменных.

    5. Выберите команду Шаг с заходом и обратите внимание, что открывается окно с названием Динамический T-SQL, отображающее оператор SQL, который будет выполняться следующим.

    6. Выберите команду Шаг с заходом, чтобы выполнить оператор и вернуться к функции.

    7. Снова нажмите Продолжить и обратите внимание, что открывается второе окно Динамический T-SQL, отображающее код, возвращающий значение функции.

    8. Снова нажмите Продолжить, чтобы завершить отладку функции.

Пример

Это код, необходимый для создания функции.

using System;
using System.Data.SqlClient;
using Microsoft.SqlServer.Server;
 
 
public partial class UserDefinedFunctions
{
    [Microsoft.SqlServer.Server.SqlFunction(DataAccess = DataAccessKind.Read)]
    public static int OrderCount()
    {
        using (SqlConnection conn = new SqlConnection("context connection=true"))
            {
                  conn.Open();
                  SqlCommand cmd = new SqlCommand();
                  cmd.Connection = conn;
                  cmd.CommandText = "SELECT 42";
                  
                  //cmd = new SqlCommand("SELECT 42",conn);
 
                  int result = (int)cmd.ExecuteScalar();
                  return result;
            }
    }
};

Это тестовый сценарий вызова функции.

SELECT dbo.OrderCount()

См. также

Задачи

Практическое руководство. Создание и запуск пользовательской функции SQL Server в среде CLR

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

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