Integración de Common Language Runtime (CLR)
Se aplica a: SQL Server Azure SQL Managed Instance
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 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, incluidos Visual Basic .NET y Visual C#. SQL Server incluye la versión 4 de .NET Framework preinstalada.
En este vídeo de 6 minutos se muestra cómo usar CLR en Azure SQL Instancia administrada:
Ya no se admite la seguridad de acceso al código
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 PERMISSION_SET = SAFE
podría tener acceso a recursos externos del sistema, llamar al código no administrado y adquirir privilegios sysadmin. En SQL Server 2017 (14.x) y versiones posteriores, la sp_configure
opción clr strict security mejora 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 clr strict security
opción se puede deshabilitar para la compatibilidad con versiones anteriores, pero no se recomienda.
Se recomienda firmar todos los ensamblados mediante un certificado o una clave asimétrica, con un inicio de sesión correspondiente al que se ha concedido UNSAFE ASSEMBLY
permiso en la master
base de datos. 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.
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, etcetera. 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 desarrolladores también pueden usar la eficacia de la biblioteca de .NET Framework, que proporciona un amplio conjunto de clases que se pueden usar para resolver problemas de programación de forma rápida y eficaz.
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 lo usa 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 de lenguaje de 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 tabla siguiente se enumeran los artículos de esta sección.
Artículo | Descripción |
---|---|
Introducción a la integración de 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. |
Integración clR: novedades | Describe las nuevas características de esta versión. |
Arquitectura de integración de CLR: entorno hospedado en CLR | Describe los objetivos de diseño de la integración con CLR. |
Habilitación de la integración clR | Describe cómo habilitar la integración con CLR. |