Configurazione del server: clr enabled

Si applica a: SQL Server

Usare l'opzione clr enabled per specificare se gli assembly utente possono essere eseguiti in SQL Server. L'opzione clr enabled restituisce i valori indicati di seguito:

valore Descrizione
0 Esecuzione degli assembly non consentita in SQL Server.
1 Esecuzione degli assembly consentita in SQL Server.

Solo per WOW64: riavviare i server WOW64 per applicare queste modifiche. Per altri tipi di server il riavvio non è necessario.

Quando si esegue RECONFIGURE e il valore dell'opzione clr enabled viene modificato da 1 a 0, vengono scaricati immediatamente tutti i domini dell'applicazione contenenti assembly utente.

Limiti

L'esecuzione di CLR (Common Language Runtime) non è supportata nell'ambito dell'opzione lightweight pooling

Disabilitare una delle due opzioni: clr enabled o lightweight pooling. Le caratteristiche che si basano su CLR e che non funzionano correttamente in modalità fiber includono il tipo di dati hierarchyid, la funzione FORMAT, la replica e la gestione basata su criteri. Per altre informazioni, vedere Configurazione del server: lightweight pooling

Anche se l'opzione di configurazione clr enabled è abilitata nel Database SQL di Azure, lo sviluppo di funzioni utente CLR non è supportato nel Database SQL di Azure.

La sicurezza dall’accesso di codice non è più supportata

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. In SQL Server 2017 (14.x) e versioni successive, l'opzione sp_configure clr strict security migliora 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.

Si consiglia di firmare tutti gli assembly con un certificato o una chiave asimmetrica tramite un account di accesso corrispondente che disponga dell'autorizzazione UNSAFE ASSEMBLY nel database master. 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.

Esempi

L'esempio seguente mostra prima di tutto l'impostazione corrente dell'opzione clr enabled, quindi abilita l'opzione impostandone il valore su 1. Per disabilitare l'opzione, impostare il valore su 0.

EXEC sp_configure 'clr enabled';
EXEC sp_configure 'clr enabled' , '1';
RECONFIGURE;