Tipos definidos por el usuario de CLR

SQL Server ofrece la posibilidad de crear objetos de base de datos programados en un ensamblado creado en Common Language Runtime (CLR) de .NET Framework. Los objetos de base de datos que pueden aprovechar el complejo modelo de programación que proporciona CLR incluyen desencadenadores, procedimientos almacenados, funciones, funciones de agregado y tipos.

Nota

La capacidad para ejecutar el código CLR se encuentra desactivada (OFF) de manera predeterminada en SQL Server. CLR puede habilitarse mediante el procedimiento almacenado del sistema sp_configure.

A partir de SQL Server 2005, puede usar los tipos definidos por el usuario (UDT) para extender el sistema de tipo escalar del servidor, habilitando el almacenamiento de objetos CLR en una base de datos de SQL Server. Los UDT pueden contener varios elementos y presentar varios comportamientos, diferenciándose de los tipos de datos de alias adicionales que constan de un tipo de datos del sistema de SQL Server único.

Dado que el sistema tiene acceso a los UDT como un conjunto, su uso para los tipos de datos complejos puede causar un impacto negativo en el rendimiento. Normalmente, los datos complejos se modelan mejor mediante filas tradicionales y tablas. Los UDT en SQL Server se adaptan perfectamente a:

  • Fecha, tiempo, moneda y tipos numéricos extendidos

  • Aplicaciones geoespaciales

  • Datos codificados o cifrados

El proceso para desarrollar los UDT en SQL Server consta de los pasos siguientes:

  1. Codificar y generar el ensamblado que define los UDT.   Los UDT se definen mediante cualquiera de los lenguajes admitidos en Common Language Runtime (CLR) de .NET Framework que genere código comprobable. Esto incluye Visual C# y Visual Basic .NET. Los datos se exponen como los campos y propiedades de una clase o estructura de .NET Framework, y los métodos de la clase o estructura definen los comportamientos.

  2. Registrar el ensamblado.   Los UDT pueden implementarse a través de la interfaz de usuario de Visual Studio en un proyecto de base de datos o mediante la instrucción CREATE ASSEMBLY de Transact-SQL, que copia el ensamblado que contiene la clase o estructura en una base de datos.

  3. Crear un UDT en SQL Server.   Una vez que un ensamblado se carga en una base de datos host, use la instrucción CREATE TYPE de Transact-SQL para crear un UDT y exponer los miembros de la clase o estructura como miembros del UDT. Los UDT únicamente existen en el contexto de una base de datos única y, una vez registrados, no dependen de ninguno de los archivos externos a partir de los que se crearon.

    Nota

    Antes de SQL Server 2005, no se admitían los UDT creados a partir de los ensamblados de .NET Framework. Sin embargo, todavía puede usar los tipos de datos del alias de SQL Server en SQL Server 2005 y posterior mediante sp_addtype. La sintaxis CREATE TYPE se puede usar para crear los tipos de datos definidos por el usuario nativos de SQL Server y los UDT.

  4. **Crear tablas, variables o parámetros mediante el UDT   **A partir de SQL Server 2005, un tipo definido por el usuario se puede usar como la definición de columna de una tabla, como una variable en un lote Transact-SQL o como un argumento de una función Transact-SQL o procedimiento almacenado. Para obtener información adicional, vea Trabajar con tipos definidos por el usuario para CLR.

En esta sección