Integrazione di Common Language Runtime

Si applica a: SQL Server Istanza gestita di SQL di Azure

Microsoft SQL Server e Istanza gestita di SQL di Azure consentono di implementare alcune delle funzionalità con i linguaggi .NET usando l'integrazione CLR (Common Language Runtime) nativa come moduli lato server SQL Server (procedure, funzioni e trigger). CLR fornisce codice gestito con servizi quali l'integrazione tra linguaggi diversi, la sicurezza da accesso di codice, la gestione della durata degli oggetti e il supporto per il debug e il profiling. Per SQL Server utenti e sviluppatori di applicazioni, l'integrazione con CLR consente ora di scrivere stored procedure, trigger, tipi definiti dall'utente, funzioni definite dall'utente (scalari e con valori di tabella) e funzioni di aggregazione definite dall'utente usando qualsiasi linguaggio .NET Framework, tra cui Microsoft Visual Basic .NET e Microsoft Visual C#. SQL Server include .NET Framework versione 4 preinstallata.

Avviso

CLR usa la Sicurezza dall'accesso di codice (CAS, Code Access Security) in .NET Framework, non più supportata come limite di sicurezza. Un assembly CLR creato con PERMISSION_SET = SAFE potrebbe essere in grado di accedere alle risorse di sistema esterne, chiamare codice non gestito e acquisire privilegi sysadmin. A partire da SQL Server 2017 (14.x), è disponibile un'opzione sp_configure denominata clr strict security che consente di incrementare la sicurezza degli assembly CLR. clr strict security è abilitata per impostazione predefinita e considera gli assembly CLR SAFE e UNSAFE come se fossero contrassegnati EXTERNAL_ACCESS. È possibile disabilitare l'opzione clr strict security per la compatibilità con le versioni precedenti, ma questa operazione è sconsigliata. Microsoft consiglia che tutti gli assembly siano firmati con un certificato o una chiave asimmetrica con un account di accesso corrispondente che disponga dell'autorizzazione UNSAFE ASSEMBLY nel database master. Per altre informazioni, vedere CLR strict security. Gli amministratori di SQL Server possono anche aggiungere assembly a un elenco di assembly, considerato attendibile dal motore di database. Per altre, vedere sys.sp_add_trusted_assembly.

Questo video di 6 minuti illustra come usare CLR in Istanza gestita di SQL di Azure:

Quando usare i moduli CLR

L'integrazione CON CLR consente di implementare funzionalità complesse disponibili in .NET Framework, ad esempio espressioni regolari, codice per l'accesso a risorse esterne (server, servizi Web, database), crittografia personalizzata e così via. Ecco alcuni dei vantaggi dell'integrazione CLR lato server:

  • Un modello di programmazione migliore. I linguaggi .NET Framework sono in molti aspetti più avanzati rispetto a Transact-SQL, offrendo costrutti e funzionalità in precedenza non disponibili per gli sviluppatori SQL Server. È possibile inoltre sfruttare la potenza della libreria .NET Framework che fornisce una vasta gamma di classi, utilizzabili in modo rapido ed efficiente per risolvere i problemi di programmazione.

  • Miglioramento della sicurezza e della protezione. Il codice gestito è in esecuzione in un ambiente CLR, ospitato dal motore di database. SQL Server sfrutta questa funzionalità per offrire un'alternativa più sicura e sicura alle stored procedure estese disponibili nelle versioni precedenti di SQL Server.

  • Possibilità di definire tipi di dati e funzioni di aggregazione. I tipi definiti dall'utente e le aggregazioni definite dall'utente sono due nuovi oggetti di database gestiti che espandono le funzionalità di archiviazione e query di SQL Server.

  • Sviluppo semplificato attraverso un ambiente standardizzato. Lo sviluppo di database è integrato nelle versioni future dell'ambiente di sviluppo .NET di Microsoft Visual Studio. Gli sviluppatori utilizzano per lo sviluppo e il debug degli script e degli oggetti di database gli stessi strumenti impiegati per scrivere componenti e servizi .NET Framework di livello intermedio o di livello client.

  • Possibilità di prestazioni e scalabilità migliori. In molte situazioni, i modelli di compilazione ed esecuzione del linguaggio .NET Framework consentono di ottenere prestazioni migliori rispetto a Transact-SQL.

SQL Server estensioni del linguaggio forniscono un ambiente di esecuzione alternativo per i runtime vicini al motore di database. Per una discussione sulle differenze tra il CLR SQL e le estensioni del linguaggio SQL, vedere Confronto tra le estensioni del linguaggio di SQL Server e il CLR SQL.

Nella tabella seguente vengono elencati gli argomenti disponibili in questa sezione.

Panoramica dell'integrazione con CLR
Descrive i tipi di oggetti che possono essere compilati usando l'integrazione CON CLR. Esamina anche i requisiti per la compilazione di oggetti di database tramite l'integrazione CON CLR.

Novità dell'integrazione con CLR
Vengono descritte le nuove caratteristiche di questa versione.

Architettura dell'integrazione con CLR
Vengono illustrati gli obiettivi di progettazione dell'integrazione con CLR.

Abilitazione dell'integrazione con CLR
Viene illustrato come abilitare l'integrazione con CLR.

Vedere anche

Installazione di .NET Framework (solo SQL Server)
Prestazioni dell'integrazione con CLR