Compartir por


Integración de Common Language Runtime

Se aplica a: SQL Server Azure SQL Instancia administrada

Microsoft SQL Server y Azure SQL Instancia administrada permiten implementar algunas de las funcionalidades con lenguajes .NET mediante la integración nativa de Common Language Runtime (CLR) como módulos del lado servidor de SQL Server (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 los usuarios y desarrolladores de aplicaciones de SQL Server, la integración clR significa que ahora puede escribir procedimientos almacenados, desencadenadores, tipos definidos por el usuario, funciones definidas por el usuario (escalar 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 Instancia administrada:

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 están en muchos aspectos más ricos que Transact-SQL, ofreciendo construcciones y funcionalidades que anteriormente no estaban disponibles para los desarrolladores de SQL Server. 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.

  • Se ha mejorado la seguridad y la seguridad. El código administrado se ejecuta en un entorno de Common Language Runtime, hospedado por el motor de base de datos. SQL Server aprovecha esta opción 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 optimizado a través de un entorno estandarizado. 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 mejorar el rendimiento y la escalabilidad. En muchas situaciones, los modelos de compilación y ejecución de .NET Framework proporcionan un rendimiento mejorado con respecto a Transact-SQL.

Las extensiones del lenguaje SQL Server proporcionan un entorno de ejecución alternativo para los entornos de ejecución cerca del 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. Revise también 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