Compartir a través de


Crear funciones CLR

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 base de datos que pueden aprovechar el modelo de programación enriquecido proporcionado por Common Language Runtime incluyen funciones de agregado, funciones, procedimientos almacenados, desencadenadores y tipos.

La creación de una función CLR en SQL Server implica los pasos siguientes:

  • Defina la función como un método estático de una clase en un lenguaje compatible con .NET Framework. Para obtener más información sobre cómo programar funciones en Common Language Runtime, consulte FUNCIONES de CLR User-Defined. A continuación, compile la clase para compilar un ensamblado en .NET Framework mediante el compilador de 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).

  • Cree 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 MicrosoftVisual 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 SqlFunction atributo . Para obtener más información, vea Deploying CLR Database Objects (Implementación de objetos de base de datos CLR).

Nota:

La capacidad de SQL Server para ejecutar código CLR está desactivada de forma predeterminada. 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 ejecutarán en SQL Server a menos que la opción habilitada para clr esté habilitada mediante sp_configure (Transact-SQL).

Acceso a recursos externos

Las funciones CLR se pueden usar para acceder a recursos externos, como archivos, recursos de red, servicios web, otras bases de datos (incluidas las instancias remotas de SQL Server). Esto se puede lograr mediante el uso de varias clases en .NET Framework, como System.IO, System.WebServices, System.Sql, etc. El ensamblaje que contiene estas funciones debe configurarse al menos con el conjunto de permisos EXTERNAL_ACCESS para este propósito. Para obtener más información, vea CREATE ASSEMBLY (Transact-SQL). El proveedor administrado de cliente SQL se puede usar para acceder a instancias remotas de SQL Server. Sin embargo, las conexiones de bucle invertido al servidor de origen no se admiten en las funciones CLR.

Para crear, modificar o quitar ensamblados en SQL Server

Para crear una función CLR

Acceso al código nativo

Las funciones CLR se pueden usar para 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). Esto puede permitirle volver a usar código heredado como UDF clR o escribir UDF críticos para el rendimiento en código nativo. Esto requiere el uso de un ensamblaje UNSAFE. Consulte Seguridad de acceso al código de integración CLR para precauciones sobre el uso de ensamblados UNSAFE.

Véase también

Creación de funciones definidas por el usuario (motor de base de datos)
Crear agregados definidos por el usuario
Ejecutar funciones definidas por el usuario
Visualización de funciones definidas por el usuario
Conceptos de programación de integración de Common Language Runtime (CLR)