Интеграция среды CLR

Область применения: SQL Server Управляемый экземпляр SQL Azure

SQL Server и Управляемый экземпляр SQL Azure позволяют реализовать некоторые функции с языками .NET с помощью интеграции среды CLR на стороне SQL Server (процедуры, функции и триггеры). Среда CLR предоставляет управляемому коду такие услуги, как межъязыковая интеграция, управление доступом для кода, управление временем существования объекта, а также поддержку отладки и профилирования.

Для пользователей SQL Server и разработчиков приложений интеграция CLR означает, что можно создавать хранимые процедуры, триггеры, определяемые пользователем типы, определяемые пользователем функции (скалярные и табличные значения), а также определяемые пользователем агрегатные функции с помощью любого языка платформа .NET Framework, включая Visual Basic .NET и Visual C#. SQL Server включает предварительно установленную платформа .NET Framework версии 4.

В этом 6-минутном видео показано, как использовать среду CLR в Управляемый экземпляр SQL Azure:

Безопасность доступа к коду больше не поддерживается

Среда CLR использует управление доступом для кода (CAS) в .NET Framework, которое больше не поддерживается в качестве границы безопасности. Сборка СРЕДЫ CLR, созданная с PERMISSION_SET = SAFE возможностью доступа к ресурсам внешней системы, вызову неуправляемого кода и получению привилегий sysadmin. В SQL Server 2017 (14.x) и более поздних версиях sp_configure параметр, clr strict security, повышает безопасность сборок СРЕДЫ CLR. clr strict security включен по умолчанию и рассматривает сборки SAFE и EXTERNAL_ACCESS, как если бы они были помечены UNSAFE. Параметр clr strict security можно отключить для обратной совместимости, но не рекомендуется.

Рекомендуется подписать все сборки сертификатом или асимметричным ключом с соответствующим именем входа, предоставленным UNSAFE ASSEMBLY в master базе данных. Администраторы SQL Server также могут добавлять сборки в список сборок, которым должен доверять ядро СУБД. Дополнительные сведения см. в разделе sys.sp_add_trusted_assembly.

Когда следует использовать модули CLR

Интеграция CLR позволяет реализовать сложные функции, доступные в платформа .NET Framework таких как регулярные выражения, код для доступа к внешним ресурсам (серверам, веб-службам, базам данных), пользовательскому шифрованию и т. д. Ниже приведены некоторые преимущества интеграции среды CLR на стороне сервера:

  • Более эффективная модель программирования. Языки платформа .NET Framework во многих отношениях более богаты, чем Transact-SQL, предлагая конструкции и возможности, ранее недоступные разработчикам SQL Server. Разработчики также могут использовать возможности библиотеки платформа .NET Framework, которая предоставляет широкий набор классов, которые можно использовать для быстрого и эффективного решения проблем программирования.

  • Улучшена безопасность и безопасность. Управляемый код выполняется в среде CLR, размещаемой в компоненте Database Engine. SQL Server использует это для обеспечения более безопасной и безопасной альтернативы расширенным хранимым процедурам, доступным в более ранних версиях SQL Server.

  • Возможность определять типы данных и агрегатные функции. Определяемые пользователем типы и определяемые пользователем агрегаты являются двумя новыми объектами управляемой базы данных, расширяющими возможности хранилища и запросов SQL Server.

  • Упрощенная разработка с помощью стандартизованной среды. Разработка баз данных интегрирована в будущие выпуски среды разработки Microsoft Visual Studio .NET. Для разработки и отладки объектов и скриптов баз данных разработчики используют те же инструментальные средства, что и для разработки компонентов и служб платформы .NET Framework клиентского и среднего уровня.

  • Потенциал для повышения производительности и масштабируемости. Во многих случаях средства компиляции и модели выполнения платформы .NET Framework предоставляют выигрыш в производительности по сравнению с Transact-SQL.

Расширения языка SQL Server предоставляют альтернативную среду выполнения для сред выполнения, близких к ядру СУБД. Обсуждение различий между SQL CLR и расширениями языка SQL см. в разделе Сравнение расширений языка SQL Server и SQL CLR.

В следующей таблице перечислены статьи в этом разделе.

Статья Описание
Общие сведения об интеграции со средой CLR Описывает виды объектов, которые можно создавать с помощью интеграции СРЕДЫ CLR. Также проверяет требования к созданию объектов базы данных с помощью интеграции СРЕДЫ CLR.
Интеграция СРЕДЫ CLR — новые возможности Описывает новые возможности в данном выпуске.
Архитектура интеграции CLR — размещенная среда CLR Описание целей разработки интеграции со средой CLR.
Включение интеграции СРЕДЫ CLR Описание включения интеграции со средой CLR.