Tipos CLR definidos por el usuario

Se aplica a:SQL Server

SQL Server proporciona la capacidad 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 de ejecutar código CLR se establece en OFF de forma predeterminada en SQL Server. CLR se puede habilitar mediante el procedimiento almacenado del sistema sp_configure .

A partir de SQL Server 2005 (9.x), puede usar tipos definidos por el usuario (UDT) para ampliar el sistema de tipos escalares del servidor, lo que permite el almacenamiento de objetos CLR en una base de datos de SQL Server. Los tipos definidos por el usuario pueden contener varios elementos y presentar diversos comportamientos, lo que los diferencia de los tipos de datos de alias tradicionales que constan de un solo tipo de datos del sistema SQL Server.

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 de SQL Server son adecuados para lo siguiente:

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

  • Aplicaciones geoespaciales

  • Datos codificados o cifrados

El proceso de desarrollo de 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 generan 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 se pueden implementar 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 cargado un ensamblado en una base de datos host, se usa 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 (9.x), no se admitían udT creados a partir de ensamblados de .NET Framework. Sin embargo, todavía puede usar SQL Server tipos de datos de alias mediante sp_addtype. La sintaxis CREATE TYPE se puede usar para crear tipos de datos y UDT nativos SQL Server definidos por el usuario.

  4. Creación de tablas, variables o parámetros mediante el UDT A partir de SQL Server 2005 (9.x), se puede usar un tipo definido por el usuario como definición de columna de una tabla, como una variable en un lote de Transact-SQL, o como argumento de una función o procedimiento almacenado de Transact-SQL.

En esta sección

Creación de un tipo de User-Defined
Describe cómo crear los UDT.

Registrar tipos definidos por el usuario en SQL Server
Describe cómo registrar y administrar udT en SQL Server.

Trabajar con tipos definidos por el usuario en SQL Server
Describe cómo crear consultas mediante los UDT.

Acceso a tipos definidos por el usuario en ADO.NET
Describe cómo trabajar con udT mediante el proveedor de datos de .NET Framework para SQL Server en ADO.NET.