Интеграция с общеязыковой средой выполнения

Применимо к: SQL Server Управляемый экземпляр SQL Azure

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

Предупреждение

Среда CLR использует управление доступом для кода (CAS) в .NET Framework, которое больше не поддерживается в качестве границы безопасности. Сборки среды CLR, созданные с помощью PERMISSION_SET = SAFE, могут получать доступ к внешним системным ресурсам, вызывать неуправляемый код и получать права системного администратора. Начиная с SQL Server 2017 (14.x);, появился параметр sp_configure, называемый clr strict security, для повышения безопасности сборок среды CLR. clr strict security включен по умолчанию и рассматривает сборки SAFE и EXTERNAL_ACCESS, как если бы они были помечены UNSAFE. Параметр clr strict security можно отключить для обеспечения обратной совместимости, но это делать не рекомендуется. Корпорация Майкрософт рекомендует подписывать все сборки с помощью сертификата или асимметричного ключа с соответствующим именем входа, которому предоставлено разрешение UNSAFE ASSEMBLY в базе данных master. Дополнительные сведения см. в статье о параметре clr strict security. Администраторы SQL Server также могут добавлять сборки в список сборок, которым должно доверять ядро СУБД. Дополнительные сведения см. в разделе sys.sp_add_trusted_assembly.

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

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

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

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

  • Улучшенная надежность и безопасность. Управляемый код выполняется в среде 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.

См. также:

Установка платформа .NET Framework (только SQL Server)
Производительность интеграции со средой CLR