Integración de Common Language Runtime

Se aplica a:SQL ServerAzure SQL Managed Instance

Microsoft SQL Server y Azure SQL Managed Instance permiten implementar algunas de las funcionalidades con lenguajes .NET mediante la integración nativa de Common Language Runtime (CLR) como SQL Server módulos del lado servidor (procedimientos, funciones y desencadenadores). El CLR proporciona código administrado con servicios como, por ejemplo, integración entre idiomas, seguridad de acceso del código, administración de la vigencia del objeto y compatibilidad con la depuración y la creación de perfiles. Para SQL Server usuarios y desarrolladores de aplicaciones, la integración clR significa que ahora puede escribir procedimientos almacenados, desencadenadores, tipos definidos por el usuario, funciones definidas por el usuario (escalares y con valores de tabla) y funciones de agregado definidas por el usuario mediante cualquier lenguaje de .NET Framework, incluido Microsoft Visual Basic .NET y Microsoft Visual C#. SQL Server incluye la versión 4 de .NET Framework preinstalada.

Advertencia

CLR usa la seguridad de acceso del código (CAS) de .NET Framework, que ya no se admite como un límite de seguridad. Un ensamblado CLR creado con la opción PERMISSION_SET = SAFE puede tener acceso a los recursos externos del sistema, llamar a código no administrado y adquirir privilegios sysadmin. A partir de SQL Server 2017 (14.x), se incluye una opción de sp_configure denominada clr strict security para mejorar la seguridad de los ensamblados CLR. La opción clr strict security está habilitada de forma predeterminada y trata los ensamblados SAFE y EXTERNAL_ACCESS como si estuvieran marcados con UNSAFE. La opción clr strict security se puede deshabilitar para permitir la compatibilidad con versiones anteriores, pero no se recomienda hacerlo. Microsoft recomienda que todos los ensamblados estén firmados con un certificado o clave asimétrica con el correspondiente inicio de sesión que tenga concedido el permiso UNSAFE ASSEMBLY en la base de datos maestra. Para obtener más información, vea CLR strict security. Los administradores de SQL Server también pueden agregar ensamblados a una lista de los ensamblados en los que el motor de base de datos debe confiar. Para más información, vea sys.sp_add_trusted_assembly.

En este vídeo de 6 minutos se muestra cómo usar CLR en Azure SQL Managed Instance:

Cuándo usar módulos CLR

La integración clR permite implementar características complejas que están disponibles en .NET Framework, como expresiones regulares, código para acceder a recursos externos (servidores, servicios web, bases de datos), cifrado personalizado, etc. Algunas de las ventajas de la integración clR del lado servidor son:

  • Un mejor modelo de programación. Los lenguajes de .NET Framework son en muchos aspectos más completos que Transact-SQL, lo que ofrece construcciones y funcionalidades que anteriormente no estaban disponibles para SQL Server desarrolladores. Los programadores también pueden aprovechar el potencial de la Biblioteca de .NET Framework, que proporciona un amplio conjunto de clases que se pueden utilizar de forma rápida y eficaz para solucionar problemas de programación.

  • Seguridad mejorada. El código administrado se ejecuta en un entorno de Common Language Runtime, hospedado por el motor de base de datos. SQL Server aprovecha esto para proporcionar una alternativa más segura y segura a los procedimientos almacenados extendidos disponibles en versiones anteriores de SQL Server.

  • Capacidad de definir tipos de datos y funciones de agregado. Los tipos definidos por el usuario y los agregados definidos por el usuario son dos nuevos objetos de base de datos administrados que expanden las funcionalidades de almacenamiento y consulta de SQL Server.

  • Desarrollo mejorado gracias a un entorno normalizado. El desarrollo de bases de datos se integra en futuras versiones del entorno de desarrollo de .NET de Microsoft Visual Studio. Los programadores utilizan las mismas herramientas para desarrollar y depurar objetos de base de datos y scripts que las que usan para escribir componentes y servicios de .NET Framework de nivel medio o nivel de cliente.

  • Potencial para un rendimiento y escalabilidad mejorados. En muchas situaciones, los modelos de compilación y ejecución de .NET Framework proporcionan un rendimiento mejorado con respecto a Transact-SQL.

SQL Server extensiones de lenguaje proporcionan un entorno de ejecución alternativo para entornos de ejecución cercanos al motor de base de datos. Para obtener una explicación de las diferencias entre el CLR de SQL y las Extensiones de lenguaje de SQL, vea Comparación entre las Extensiones de lenguaje de SQL Server y el CLR de SQL.

En la siguiente tabla se muestran los temas de esta sección.

Información general de la integración CLR
Describe los tipos de objetos que se pueden compilar mediante la integración clR. También revisa los requisitos para compilar objetos de base de datos mediante la integración clR.

Novedades de la integración CLR
Describe las nuevas características de esta versión.

Arquitectura de integración CLR
Describe los objetivos de diseño de la integración con CLR.

Habilitar la integración con CLR
Describe cómo habilitar la integración con CLR.

Consulte también

Instalación de .NET Framework (solo SQL Server)
Rendimiento de la integración CLR