Condividi tramite


Creare 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 in grado di sfruttare il ricco modello di programmazione fornito da CLR includono funzioni di aggregazione, funzioni, stored procedure, trigger e tipi.

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

  • Definire la funzione come metodo statico di una classe in un linguaggio supportato da .NET Framework. Per altre informazioni sulla programmazione di funzioni in CLR, vedere Funzioni CLR definite dall'utente. Compilare quindi la classe per compilare un assembly in .NET Framework usando il compilatore del 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 .

Nota

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

Nota

La possibilità di SQL Server di eseguire 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 enabled non sia abilitata tramite sp_configure (Transact-SQL).

Accesso a 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.WebServices, System.Sqle così via. L'assembly che contiene tali funzioni deve essere configurato almeno con l'autorizzazione EXTERNAL_ACCESS impostata a questo scopo. Per altre informazioni, vedere CREATE ASSEMBLY (Transact-SQL). L'Provider gestito sql client può essere usata per accedere a istanze remote di SQL Server. tuttavia nelle funzioni CLR le connessioni loopback al server di origine non sono supportate.

Per creare, modificare o eliminare 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 codice scritto in C o C++, tramite l'uso di PInvoke da codice gestito. Per informazioni dettagliate, vedere Chiamata a funzioni native da codice gestito . In questo modo è possibile riutilizzare codice legacy, quali funzioni CLR definite dall'utente, o scrivere funzioni definite dall'utente critiche per le prestazioni in codice nativo. Tale operazione richiede l'utilizzo di un assembly UNSAFE. Vedere Sicurezza dall'accesso di codice dell'integrazione con CLR per le cautele da prendere per l'uso di assembly UNSAFE.

Vedere anche

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