Tipi definiti dall'utente CLR

Si applica a:SQL Server

SQL Server consente di creare oggetti di database programmati su un assembly creato in Common Language Runtime (CLR) di .NET Framework. 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.

Nota

La possibilità di eseguire codice CLR è impostata su OFF per impostazione predefinita in SQL Server. È possibile abilitare CLR usando la stored procedure di sistema sp_configure .

A partire da SQL Server 2005 (9.x), è possibile usare tipi definiti dall'utente (UDT) per estendere il sistema di tipi scalari del server, abilitando l'archiviazione di oggetti CLR in un database SQL Server. Gli UDT possono contenere più elementi e presentare comportamenti diversi. Si distinguono dai tipi di dati alias tradizionali che sono costituiti da un singolo tipo di dati di sistema SQL Server.

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. Il modo migliore per modellare i dati complessi in genere consiste nell'utilizzare righe e tabelle tradizionali. Le UD in SQL Server sono adatte alle seguenti:

  • Data, ora, valuta e tipi numerici estesi

  • Applicazioni Geospatial

  • Dati codificati o crittografati

Il processo di sviluppo di UDT in SQL Server è costituito dai passaggi seguenti:

  1. Codifica e compilazione dell'assembly che definisce il tipo definito dall'utente. 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, Microsoft Visual C# e 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.

  2. Registrazione dell'assembly. È possibile distribuire l'utente tramite l'interfaccia utente di Visual Studio in un progetto di database oppure usando l'istruzione Transact-SQL CREATE ASSEMBLY, che copia l'assembly contenente la classe o la struttura in un database.

  3. Creazione del tipo definito dall'utente in SQL Server. Dopo aver caricato un assembly in un database host, usare l'istruzione Transact-SQL CREATE TYPE per creare un'UDT ed esporre i membri della classe o della struttura come membri dell'utente utente. 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.

    Nota

    Prima di SQL Server 2005 (9.x), le unità definite dall'utente create da assembly .NET Framework non sono supportate. Tuttavia, è comunque possibile usare SQL Server tipi di dati alias usando sp_addtype. La sintassi CREATE TYPE può essere usata per creare sia tipi di dati nativi SQL Server tipi di dati definiti dall'utente che UDT.

  4. Creare tabelle, variabili o parametri usando l'UDT A partire da SQL Server 2005 (9.x), un tipo definito dall'utente può essere usato come definizione di colonna di una tabella, come variabile in un batch Transact-SQL o come argomento di una funzione Transact-SQL o di una stored procedure.

Contenuto della sezione

Creazione di un tipo di User-Defined
Viene illustrato come creare tipi definiti dall'utente.

Registrazione dei tipi definiti dall'utente in SQL Server
Viene descritto come registrare e gestire gli UDT in SQL Server.

Uso di tipi definiti dall'utente in SQL Server
Viene descritto come creare query mediante i tipi definiti dall'utente.

Accesso ai tipi definiti dall'utente in ADO .NET
Viene descritto come usare gli UDT usando il provider di dati .NET Framework per SQL Server in ADO.NET.