Tipi CLR definiti dall'utenteCLR User-Defined Types

In questo argomento si applica a: SìSQL ServernonDatabase SQL di AzurenonAzure SQL Data Warehouse non Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse SQL ServerSQL Server offre la possibilità di creare oggetti di database programmati in un assembly creato in.NET Framework common language runtime (CLR). SQL ServerSQL Server gives you the ability to create database objects that are programmed against an assembly created in the.NET Framework common language runtime (CLR). Tra gli oggetti di database che consentono l'utilizzo del ricco modello di programmazione offerto da CLR vi sono trigger, stored procedure, funzioni, funzioni di aggregazione e tipi.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

Per impostazione predefinita, l'esecuzione di codice CLR in SQL ServerSQL Server è disattivata.The ability to execute CLR code is set to OFF by default in SQL ServerSQL Server. Common Language Runtime può essere abilitato utilizzando il sp_configure stored procedure di sistema.The CLR can be enabled by using the sp_configure system stored procedure.

A partire da SQL Server 2005SQL Server 2005, è possibile utilizzare i tipi definiti dall'utente (UDT) per estendere il sistema di tipi scalari del server, consentendo l'archiviazione di oggetti CLR in un SQL ServerSQL Server database.Beginning with SQL Server 2005SQL Server 2005, 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. I tipi definiti dall'utente possono contenere più elementi e assumere vari comportamenti. Questo li differenzia dai tipi di dati alias tradizionali costituiti da un singolo tipo di dati di sistema di SQL ServerSQL Server.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.

Poiché il sistema accede ai tipi definiti dall'utente nella loro interezza, l'utilizzo che ne viene fatto per i tipi di dati complessi può influire negativamente sulle prestazioni.Because UDTs are accessed by the system as a whole, their use for complex data types may negatively impact performance. Il modo migliore per modellare i dati complessi in genere consiste nell'utilizzare righe e tabelle tradizionali.Complex data is generally best modeled using traditional rows and tables. I tipi definiti dall'utente in SQL ServerSQL Server risultano particolarmente adatti per:UDTs in SQL ServerSQL Server are well suited to the following:

  • Data, ora, valuta e tipi numerici estesiDate, time, currency, and extended numeric types

  • Applicazioni GeospatialGeospatial applications

  • Dati codificati o crittografatiEncoded or encrypted data

    Il processo di sviluppo dei tipi definiti dall'utente in SQL ServerSQL Server è costituito dai passaggi seguenti:The process of developing UDTs in SQL ServerSQL Server consists of the following steps:

  1. Codifica e compilazione dell'assembly che definisce il tipo definito dall'utente.Code and build the assembly that defines the UDT. I tipi definiti dall'utente vengono definiti utilizzando uno dei linguaggi supportati da CLR (Common Language Runtime) di .NET Framework che generano codice verificabile, tra cui, ad esempio,UDTs are defined using any of the languages supported by the.NET Framework common language runtime (CLR) that produce verifiable code. Microsoft Visual C# e Visual Basic .NET.This includes Visual C# and Visual Basic .NET. I dati vengono esposti come campi e proprietà di una classe o una struttura .NET Framework mentre i comportamenti vengono definiti dai metodi della classe o della struttura.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. Registrazione dell'assembly.Register the assembly. I tipi definiti dall'utente possono essere distribuiti attraverso l'interfaccia utente di Visual Studio in un progetto di database o mediante l'istruzione Transact-SQLTransact-SQL CREATE ASSEMBLY, che copia l'assembly contenente la classe o la struttura in un database.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. Creare il tipo definito dall'utente in SQL Server.Create the UDT in SQL Server. Dopo aver caricato un assembly in un database host, viene utilizzata l'istruzione Transact-SQLTransact-SQL CREATE TYPE per creare un tipo definito dall'utente e vengono esposti i membri della classe o della struttura come membri del tipo in questione.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. I tipi definiti dall'utente esistono solo nel contesto di un singolo database e dopo la registrazione non hanno dipendenze sui file esterni da cui sono stati creati.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

    Prima di SQL Server 2005SQL Server 2005, i tipi definiti dall'utente creati dagli assembly di .NET Framework non erano supportati.Before SQL Server 2005SQL Server 2005, UDTs created from .NET Framework assemblies were not supported. Tuttavia, è comunque possibile usare SQL ServerSQL Server tipi di dati alias tramite sp_addtype.However, you can still use SQL ServerSQL Server alias data types by using sp_addtype. La sintassi CREATE TYPE può essere utilizzata per creare tipi di dati definiti dall'utente di SQL ServerSQL Server nativi e tipi definiti dall'utente.The CREATE TYPE syntax can be used for creating both native SQL ServerSQL Server user-defined data types and UDTs.

  4. Creare tabelle, variabili o parametri utilizzando il tipo definito dall'utente a partire da SQL Server 2005SQL Server 2005, un tipo definito dall'utente può essere utilizzato come definizione di colonna di una tabella, come una variabile in un Transact-SQLTransact-SQL batch, o come un argomento di un Transact-SQLTransact-SQL di funzione o archiviati stored procedure.Create tables, variables, or parameters using the UDT Beginning with SQL Server 2005SQL Server 2005, 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.

Argomenti della sezioneIn This Section

Creazione di un tipo definito dall'utenteCreating a User-Defined Type
Viene illustrato come creare tipi definiti dall'utente.Describes how to create UDTs.

Registrazione dei tipi definiti dall'utente in SQL ServerRegistering User-Defined Types in SQL Server
Viene illustrato come registrare e gestire i tipi definiti dall'utente (UDT) in SQL ServerSQL Server.Describes how to register and manage UDTs in SQL ServerSQL Server.

Uso di tipi definiti dall'utente in SQL ServerWorking with User-Defined Types in SQL Server
Viene descritto come creare query mediante i tipi definiti dall'utente.Describes how to create queries using UDTs.

Accesso ai tipi definiti dall'utente in ADO.NETAccessing User-Defined Types in ADO.NET
Viene illustrato come utilizzare i tipi definiti dall'utente mediante il provider di dati .NET Framework per SQL ServerSQL Server in ADO.NET.Describes how to work with UDTs using the .NET Framework Data Provider for SQL ServerSQL Server in ADO.NET.