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


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

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

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

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

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

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

Замечание

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

Замечание

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

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

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

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

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

Доступ к нативному коду

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

См. также

Создание определяемых пользователем функций (ядро СУБД)
Создание определяемых пользователем агрегатов
Выполнение определяемых пользователем функций
Просмотр определяемых пользователем функций
Концепции программирования интеграции с Common Language Runtime (CLR)