Crear funciones CLR
Es posible 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 Microsoft .NET Framework. Los objetos de bases de datos capaces de aprovechar el modelo enriquecido de programación suministrado por Common Language Runtime son las funciones de agregado, las funciones, los procedimientos almacenados, los desencadenadores y los 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 acerca de cómo programar funciones en Common Language Runtime, vea Funciones CLR definidas por el usuario. A continuación, compilar la clase para generar un ensamblado en .NET Framework mediante el compilador del lenguaje adecuado.
Registrar el ensamblado en SQL Server mediante la instrucción CREATE ASSEMBLY. Para obtener más información acerca de los ensamblados de 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.
Nota
La implementación de un proyecto de SQL Server en Microsoft 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, vea Implementar objetos de base de datos de CLR.
Nota
La capacidad de SQL Server para ejecutar el código CLR se encuentra desactivada de manera predeterminada. Puede crear, modificar y quitar objetos de base de datos que hacen referencia a los módulos de códigos administrados; sin embargo, estas referencias no se ejecutarán en SQL Server a menos que se haya habilitado la opción clr enabled mediante sp_configure (Transact-SQL).
Obtener acceso a recursos externos
Las funciones CLR se pueden utilizar para obtener acceso a recursos externos tales como archivos, recursos de red, servicios web y otras bases de datos (incluidas las instancias remotas de SQL Server). Para ello, es posible utilizar diversas clases en .NET Framework, como por ejemplo System.IO, System.WebServices, System.Sql, etc. El ensamblado que contiene estas funciones debe estar configurado por lo menos con el conjunto de permisos EXTERNAL_ACCESS que tiene este objetivo. Para obtener más información, vea CREATE ASSEMBLY (Transact-SQL). El proveedor administrado cliente SQL se puede utilizar para obtener acceso a instancias remotas de SQL Server. No obstante, las conexiones vinculadas en bucles de retorno con el servidor de origen no están admitidas en las funciones CLR.
Para crear, modificar o quitar ensamblados de SQL Server
Para crear una función CLR
Acceso a código nativo
Las funciones CLR se pueden utilizar para tener acceso a código nativo (no administrado), como el código escrito en C o C++, a través del uso de PInvoke desde código administrado (vea Llamar a funciones nativas desde código administrado para obtener detalles). Así, puede reutilizar el código heredado como las UDF de CLR, o escribir UDF esenciales para el rendimiento en código nativo. Esto requiere usar un ensamblado UNSAFE. Vea Seguridad de acceso del código de integración CLR para conocer advertencias acerca del uso de ensamblados UNSAFE.
Vea también