Condividi tramite


Tipi CLR definiti dall'utente

Si applica a: SQL Server

SQL Server consente di creare oggetti di database programmati in base a 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 dei tipi scalari del server, abilitando l'archiviazione di oggetti CLR in un database di SQL Server. I tipi definiti dall'utente possono contenere più elementi e possono avere comportamenti, differenziandoli dai tipi di dati alias tradizionali costituiti da un singolo tipo di dati di sistema di 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. I tipi definiti dall'utente in SQL Server sono particolarmente adatti ai seguenti:

  • Data, ora, valuta e tipi numerici estesi

  • Applicazioni Geospatial

  • Dati codificati o crittografati

Il processo di sviluppo di tipi definiti dall'utente in SQL Server è costituito dai passaggi seguenti:

  1. Scrivere il codice e compilare l'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. Registrare l'assembly . I tipi definiti dall'utente possono essere distribuiti tramite l'interfaccia utente di Visual Studio in un progetto di database o tramite l'istruzione Transact-SQL CREATE ASSEMBLY, che copia l'assembly contenente la classe o la struttura in un database.

  3. Creare il 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 tipo definito dall'utente ed esporre i membri della classe o della struttura come membri del tipo definito dall'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), i tipi definiti dall'utente creati da assembly .NET Framework non erano supportati. Tuttavia, è comunque possibile usare i tipi di dati alias di SQL Server usando sp_addtype. La sintassi CREATE TYPE può essere usata per creare tipi di dati nativi definiti dall'utente e tipi definiti dall'utente di SQL Server.

  4. Creare tabelle, variabili o parametri usando il tipo definito dall'utente 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.

In questa sezione

Creazione di un tipo definito dall'utente
Viene illustrato come creare tipi definiti dall'utente.

Registrazione dei tipi definiti dall'utente in SQL Server
Viene descritto come registrare e gestire tipi definiti dall'utente 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 i tipi definiti dall'utente usando .NET Framework provider di dati per SQL Server in ADO.NET.