Tipos definidos por el usuario de CLRCLR User-Defined Types

SE APLICA A: síSQL Server noAzure SQL Database noAzure SQL Data Warehouse noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

SQL ServerSQL Server le ofrece la capacidad para crear objetos de base de datos que se programan en un ensamblado creado en common language runtime (CLR) de .NET Framework.gives you the ability to create database objects that are programmed against an assembly created in the .NET Framework common language runtime (CLR). 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.Database objects that can take advantage of the rich programming model provided by the CLR include triggers, stored procedures, functions, aggregate functions, and types.

Nota

La capacidad para ejecutar el código CLR se encuentra desactivada (OFF) de manera predeterminada en SQL ServerSQL Server.The ability to execute CLR code is set to OFF by default in SQL ServerSQL Server. El CLR puede habilitarse mediante la sp_configure procedimiento almacenado del sistema.The CLR can be enabled by using the sp_configure system stored procedure.

A partir SQL Server 2005 (9.x)SQL Server 2005 (9.x), puede utilizar tipos definidos por el usuario (UDT) para ampliar el sistema de tipos escalares del servidor, habilitando el almacenamiento de objetos CLR en un SQL ServerSQL Server base de datos.Beginning with SQL Server 2005 (9.x)SQL Server 2005 (9.x), you can use user-defined types (UDTs) to extend the scalar type system of the server, enabling storage of CLR objects in a SQL ServerSQL Server database. 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 ServerSQL Server único.UDTs can contain multiple elements and can have behaviors, differentiating them from the traditional alias data types which consist of a single SQL ServerSQL Server system data type.

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.Because UDTs are accessed by the system as a whole, their use for complex data types may negatively impact performance. Normalmente, los datos complejos se modelan mejor mediante filas tradicionales y tablas.Complex data is generally best modeled using traditional rows and tables. Los UDT en SQL ServerSQL Server se adaptan perfectamente a:UDTs in SQL ServerSQL Server are well suited to the following:

  • Fecha, tiempo, moneda y tipos numéricos extendidosDate, time, currency, and extended numeric types

  • Aplicaciones geoespacialesGeospatial applications

  • Datos codificados o cifradosEncoded or encrypted data

El proceso para desarrollar los UDT en SQL ServerSQL Server consta de los pasos siguientes:The process of developing UDTs in SQL ServerSQL Server consists of the following steps:

  1. Codificar y generar el ensamblado que define el UDT.Code and build the assembly that defines the UDT. Los UDT se definen mediante cualquiera de los lenguajes admitidos en Common Language Runtime (CLR) de .NET Framework que generan código comprobable.UDTs are defined using any of the languages supported by the.NET Framework common language runtime (CLR) that produce verifiable code. Esto incluye Visual C# y Visual Basic .NET.This includes Visual C# and 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.The data is exposed as fields and properties of a .NET Framework class or structure, and behaviors are defined by methods of the class or structure.

  2. Registrar el ensamblado.Register the assembly. 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-SQLTransact-SQL, que copia el ensamblado que contiene la clase o estructura en una base de datos.UDTs can be deployed through the Visual Studio user interface in a database project, or by using the Transact-SQLTransact-SQL CREATE ASSEMBLY statement, which copies the assembly containing the class or structure into a database.

  3. Crear un UDT en SQL Server.Create the UDT in SQL Server. Una vez que un ensamblado se carga en una base de datos host, use la instrucción CREATE TYPE de Transact-SQLTransact-SQL para crear un UDT y exponer los miembros de la clase o estructura como miembros del UDT.Once an assembly is loaded into a host database, you use the Transact-SQLTransact-SQL CREATE TYPE statement to create a UDT and expose the members of the class or structure as members of the 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.UDTs exist only in the context of a single database, and, once registered, have no dependencies on the external files from which they were created.

    Nota

    Antes de SQL Server 2005 (9.x)SQL Server 2005 (9.x), no se admitían los UDT creados a partir de los ensamblados de .NET Framework.Before SQL Server 2005 (9.x)SQL Server 2005 (9.x), UDTs created from .NET Framework assemblies were not supported. Sin embargo, todavía puede usar SQL ServerSQL Server tipos de datos de alias mediante el uso de sp_addtype.However, you can still use SQL ServerSQL Server alias data types by using sp_addtype. La sintaxis CREATE TYPE se puede usar para crear los tipos de datos definidos por el usuario nativos de SQL ServerSQL Server y los UDT.The CREATE TYPE syntax can be used for creating both native SQL ServerSQL Server user-defined data types and UDTs.

  4. Crear tablas, variables o parámetros mediante el UDT empezando por SQL Server 2005 (9.x)SQL Server 2005 (9.x), un tipo definido por el usuario puede utilizarse como definición de columna de una tabla, como una variable en un Transact-SQLTransact-SQL por lotes, o como un argumento de un Transact-SQLTransact-SQL función o almacenados procedimiento.Create tables, variables, or parameters using the UDT Beginning with SQL Server 2005 (9.x)SQL Server 2005 (9.x), a user-defined type can be used as the column definition of a table, as a variable in a Transact-SQLTransact-SQL batch, or as an argument of a Transact-SQLTransact-SQL function or stored procedure.

En esta secciónIn This Section

Crear un tipo definido por el usuarioCreating a User-Defined Type
Describe cómo crear los UDT.Describes how to create UDTs.

Registrar tipos definidos por el usuario en SQL ServerRegistering User-Defined Types in SQL Server
Describe cómo registrar y administrar los UDT en SQL ServerSQL Server.Describes how to register and manage UDTs in SQL ServerSQL Server.

Trabajar con tipos definidos por el usuario en SQL ServerWorking with User-Defined Types in SQL Server
Describe cómo crear consultas mediante los UDT.Describes how to create queries using UDTs.

Acceso a tipos definidos por el usuario en ADO.NETAccessing User-Defined Types in ADO.NET
Describe cómo trabajar con los UDT mediante el proveedor de datos de .NET Framework para SQL ServerSQL Server en ADO.NET.Describes how to work with UDTs using the .NET Framework Data Provider for SQL ServerSQL Server in ADO.NET.