Crear funciones CLR
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores
Puede crear un objeto de base de datos dentro de una instancia de SQL Server programada en un ensamblado creado en Common Language Runtime (CLR) de .NET Framework. Los objetos de base de datos que pueden usar el modelo de programación enriquecido proporcionado por Common Language Runtime incluyen funciones de agregado, funciones, procedimientos almacenados, desencadenadores y tipos.
Para crear una función CLR en SQL Server se deben seguir los pasos detallados a continuación:
Definir la función como un método estático de una clase en un lenguaje admitido por .NET Framework. Para obtener más información sobre cómo programar funciones en el Common Language Runtime (CLR), consulte funciones definidas por el usuario en el CLR. A continuación, compilar la clase para generar un ensamblado en .NET Framework mediante el compilador del lenguaje adecuado.
Registre el ensamblado en SQL Server mediante la instrucción
CREATE ASSEMBLY
. Para obtener más información sobre los ensamblados en SQL Server, vea Ensamblados (motor de base de datos).Crear la función que hace referencia al ensamblado registrado mediante la instrucción CREATE FUNCTION .
La ejecución de código CLR está desactivada de forma predeterminada en SQL Server. Puede crear, modificar y quitar objetos de base de datos que hacen referencia a módulos de código administrado, pero estas referencias no se ejecutan en SQL Server, a menos que la opción de configuración de servidor clr habilitada
La implementación de un proyecto de SQL Server en Visual Studio registra un ensamblado en la base de datos especificada para el proyecto. La implementación del proyecto también crea funciones CLR en la base de datos para todos los métodos anotados con el atributo SqlFunction
. Para obtener más información, consulte Implementación de objetos de base de datos CLR.
Acceso a recursos externos
Puede usar funciones CLR para acceder a recursos externos, como archivos, recursos de red, servicios web y otras bases de datos (incluidas las instancias remotas de SQL Server). Las funciones CLR pueden usar varias clases en .NET Framework, como System.IO
, System.WebServices
, System.Sql
, etc. El ensamblado que contiene estas funciones debe configurarse al menos con el conjunto de permisos EXTERNAL_ACCESS
para tal propósito. Para obtener más información, vea CREATE ASSEMBLY.
El proveedor administrado cliente SQL se puede utilizar para obtener acceso a instancias remotas de SQL Server. Sin embargo, las conexiones de bucle invertido al servidor de origen no se admiten en las funciones CLR.
Creación, modificación o eliminación de ensamblados en SQL Server
Creación de una función CLR
Acceso al código nativo
Las funciones CLR pueden acceder al código nativo (no administrado), como el código escrito en C o C++, mediante el uso de PInvoke
desde código administrado (consulte Llamada a funciones nativas desde código administrado para obtener más información). Puede reutilizar el código heredado como UDF CLR, o escribir UDF críticas para el rendimiento en código nativo, y ambos requieren el uso de un ensamblado UNSAFE
. Consulte Seguridad de acceso al código en la integración de CLR para obtener precauciones sobre el uso de ensamblados de UNSAFE
.