Создание функций CLR
Область применения: SQL Server 2016 (13.x) и более поздних версий
Объект базы данных можно создать внутри экземпляра SQL Server, который запрограммирован в сборке, созданной в среде CLR (CLR) Microsoft платформа .NET Framework. Объекты базы данных, которые могут использовать расширенную модель программирования, предоставляемую средой CLR, включают агрегатные функции, функции, хранимые процедуры, триггеры и типы.
Создание функции CLR в SQL Server включает следующие действия.
Определите функцию как статический метод класса на языке, поддерживаемом платформа .NET Framework. Дополнительные сведения о программировании функций в среде CLR см. в разделе Определяемые пользователем функции среды CLR. Затем скомпилируйте класс для сборки сборки в платформа .NET Framework с помощью соответствующего компилятора языка.
Зарегистрируйте сборку в SQL Server с помощью инструкции CREATE ASSEMBLY. Дополнительные сведения о сборках в SQL Server см. в разделе "Сборки" (ядро СУБД).
Создать функцию, ссылающуюся на зарегистрированную сборку, с помощью инструкции CREATE FUNCTION .
Выполнение кода CLR по умолчанию отключено в SQL Server. Вы можете создавать, изменять и удалять объекты базы данных, ссылающиеся на модули управляемого кода, но эти ссылки не будут выполняться в SQL Server, если только вы не включите параметр clr с помощью sp_configure (Transact-SQL).
Развертывание проекта SQL Server в Microsoft Visual Studio регистрирует сборку в базе данных, указанной для проекта. Кроме того, в базе данных создаются функции CLR для всех методов, сопровождаемых атрибутом SqlFunction . Дополнительные сведения см. в статье Deploying CLR Database Objects.
Доступ к внешним ресурсам
Функции CLR можно использовать для доступа к внешним ресурсам, таким как файлы, сетевые ресурсы, веб-службы, другие базы данных (включая удаленные экземпляры SQL Server). Это можно достичь с помощью различных классов в платформа .NET Framework, таких как System.IO
, System.WebServices
System.Sql
и т. д. Сборка, содержащая такие функции, должна иметь как минимум разрешения EXTERNAL_ACCESS, чтобы иметь доступ к внешним ресурсам. Дополнительные сведения см. в статье CREATE ASSEMBLY (Transact-SQL). Управляемый поставщик клиента SQL можно использовать для доступа к удаленным экземплярам SQL Server. Однако подключения обратного цикла к исходному серверу не поддерживаются в функциях CLR.
Создание, изменение и удаление сборок в SQL Server
Создание функции CLR
Доступ к собственному коду
Функции CLR могут получить доступ к собственному (неуправляемом) коду, например коду, написанному на C или C++, с помощью управляемого кода (дополнительные сведения см. в статье "Вызов собственных функций из управляемого PInvoke
кода"). Это позволяет повторно использовать устаревший код как определяемые пользователем среды CLR или записывать критически важные для производительности определяемые пользователем функции в машинном коде и использовать сборку UNSAFE. Предупреждения, касающиеся использования сборок UNSAFE, см. в разделе CLR Integration Code Access Security .