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


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

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

Чтобы создать функцию CLR в SQL Server, необходимо выполнить следующие шаги:

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

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

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

ПримечаниеПримечание

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

ПримечаниеПримечание

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

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

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

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

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

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

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

См. также

Основные понятия

Создание определяемых пользователем функций (компонент Database Engine)

Создание определяемых пользователем агрегатных функций

Выполнение определяемых пользователем функций

Просмотр определяемых пользователем функций

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

Основные понятия о программировании интеграции со средой CLR