Поделиться через


Создание функций CLR

Область применения: SQL Server 2016 (13.x) и более поздних версий

Объект базы данных можно создать в экземпляре SQL Server, который запрограммирован в сборке, созданной в среде CLR .NET Framework. Объекты базы данных, которые могут использовать расширенную модель программирования, предоставляемую средой CLR, включают агрегатные функции, функции, хранимые процедуры, триггеры и типы.

Создание функции CLR в SQL Server включает следующие действия.

  • Определите функцию как статический метод класса на языке, поддерживаемом платформа .NET Framework. Дополнительные сведения о программировании функций в общем языке исполнения см. в разделе функций, определяемых пользователем. Затем скомпилируйте класс для сборки сборки в платформа .NET Framework с помощью соответствующего компилятора языка.

  • Зарегистрируйте сборку в SQL Server с помощью инструкции CREATE ASSEMBLY. Дополнительные сведения о сборках в SQL Server см. в разделе "Сборки" (ядро СУБД).

  • Создать функцию, ссылающуюся на зарегистрированную сборку, с помощью инструкции CREATE FUNCTION .

Выполнение кода CLR по умолчанию отключено в SQL Server. Можно создавать, изменять и удалять объекты базы данных, ссылающиеся на модули управляемого кода, но эти ссылки не выполняются в SQL Server, если только параметр clr не включен конфигурации сервера с помощью sp_configure.

Развертывание проекта SQL Server в Visual Studio регистрирует сборку в базе данных, указанной для проекта. При развертывании проекта также создаются функции CLR в базе данных для всех методов, аннотированных атрибутом SqlFunction. Дополнительные сведения см. в Развертывание объектов CLR-базы данных.

Доступ к внешним ресурсам

Функции CLR можно использовать для доступа к внешним ресурсам, таким как файлы, сетевые ресурсы, веб-службы и другие базы данных (включая удаленные экземпляры SQL Server). Функции CLR могут использовать различные классы в .NET Framework, например System.IO, System.WebServices, System.Sqlи т. д. Сборка, содержащая такие функции, должна быть настроена с набором разрешений EXTERNAL_ACCESS как минимум для этой цели. Дополнительную информацию см. в разделе CREATE ASSEMBLY.

Управляемый поставщик клиента SQL можно использовать для доступа к удаленным экземплярам SQL Server. Однако подключения обратного цикла к исходному серверу не поддерживаются в функциях CLR.

Создание, изменение или удаление сборок в SQL Server

Создание функции CLR

Доступ к собственному коду

Функции CLR могут получить доступ к собственному (неуправляемом) коду, например коду, написанному на C или C++, с помощью управляемого кода (дополнительные сведения см. в статье "Вызов собственных функций из управляемого PInvoke кода"). Вы можете повторно использовать устаревший код в виде UDF (определяемых пользователем функций) среды CLR или писать критически важные для производительности UDF на машинном коде. Это требует использования сборки UNSAFE. См. раздел об интеграции CLR для предостережений по использованию сборок .