Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: 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, если только с помощью sp_configure не включён параметр конфигурации сервера clr enabled.
Развертывание проекта 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 не поддерживаются loopback-подключения к исходному серверу.
Создание, изменение или удаление сборок в SQL Server
Создание функции CLR
Доступ к собственному коду
Функции CLR могут обращаться к собственному (неуправляемому) коду, например, к коду, написанному на C или C++, с помощью PInvoke из управляемого кода (подробные сведения см. в разделе Вызов собственных функций из управляемого кода). Вы можете повторно использовать устаревший код в виде UDF (определяемых пользователем функций) среды CLR или писать критически важные для производительности UDF на машинном коде. Это требует использования сборки UNSAFE. См. раздел об интеграции CLR