Condividi tramite


Creare le funzioni CLR

È possibile creare un oggetto di database all'interno di un'istanza di SQL Server programmata in un assembly creato in Common Language Runtime (CLR) di Microsoft .NET Framework. Gli oggetti di database che possono sfruttare il modello di programmazione avanzato fornito da Common Language Runtime includono funzioni di aggregazione, funzioni, stored procedure, trigger e tipi.

La creazione di una funzione CLR in SQL Server prevede i seguenti passaggi:

  • Definire la funzione come metodo statico di una classe in un linguaggio supportato da .NET Framework. Per altre informazioni su come programmare le funzioni in Common Language Runtime, vedere Funzioni clr User-Defined. Quindi, compilare la classe per compilare un assembly in .NET Framework utilizzando il compilatore per il linguaggio appropriato.

  • Registrare l'assembly in SQL Server usando l'istruzione CREATE ASSEMBLY. Per altre informazioni sugli assembly in SQL Server, vedere Assembly (motore di database).

  • Creare la funzione che fa riferimento all'assembly registrato usando l'istruzione CREATE FUNCTION .

Annotazioni

La distribuzione di un progetto DI SQL Server in MicrosoftVisual Studio registra un assembly nel database specificato per il progetto. La distribuzione del progetto crea anche funzioni CLR nel database per tutti i metodi annotati con l'attributo SqlFunction. Per altre informazioni, vedere Distribuzione di oggetti di database CLR.

Annotazioni

La capacità di SQL Server di eseguire il codice CLR è disattivata per impostazione predefinita. È possibile creare, modificare ed eliminare oggetti di database che fanno riferimento a moduli di codice gestito, ma questi riferimenti non verranno eseguiti in SQL Server a meno che l'opzione clr abilitata non sia abilitata tramite sp_configure (Transact-SQL).

Accesso alle risorse esterne

Le funzioni CLR possono essere usate per accedere a risorse esterne, ad esempio file, risorse di rete, servizi Web, altri database (incluse le istanze remote di SQL Server). A tale scopo, è possibile usare varie classi in .NET Framework, ad esempio System.IO, System.WebServicesSystem.Sql, e così via. L'assembly che contiene tali funzioni deve essere configurato almeno con il set di autorizzazioni EXTERNAL_ACCESS per questo scopo. Per altre informazioni, vedere CREATE ASSEMBLY (Transact-SQL). È possibile utilizzare il provider gestito del client SQL per accedere a istanze remote di SQL Server, Tuttavia, le connessioni loopback al server di origine non sono supportate nelle funzioni CLR.

Per creare, modificare o eliminare le assembly in SQL Server

Per creare una funzione CLR

Accesso al codice nativo

Le funzioni CLR possono essere usate per accedere al codice nativo (non gestito), ad esempio il codice scritto in C o C++, tramite l'uso di PInvoke dal codice gestito (vedere Chiamata di funzioni native dal codice gestito per informazioni dettagliate). Ciò consente di riutilizzare il codice legacy come funzioni definite dall'utente CLR o scrivere funzioni definite dall'utente critiche per le prestazioni nel codice nativo. Ciò richiede l'uso di un assembly contrassegnato come UNSAFE. Per informazioni sulle precauzioni riguardanti l'uso degli assembly UNSAFE, vedere CLR Integration Code Access Security.

Vedere anche

Creare funzioni definite dall'utente (motore di database)
Creare aggregazioni definite dall'utente
Eseguire funzioni definite dall'utente
Visualizzare le funzioni definite dall'utente
Concetti relativi alla programmazione dell'integrazione di Common Language Runtime (CLR)