Создание функций 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