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