Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
Applies to:SQL Server
Il codice gestito viene compilato e quindi distribuito in unità denominate assembly CLR (Common Language Runtime). Un assembly viene inserito in un pacchetto come file DLL o eseguibile (.exe). Mentre un file eseguibile può essere eseguito in modo autonomo, una DLL deve essere ospitata in un'applicazione esistente. Gli assembly DLL gestiti possono essere caricati in e ospitati da SQL Server. SQL Server richiede di registrare l'assembly in un database usando l'istruzione CREATE ASSEMBLY, prima che possa essere caricata nel processo e usata. Gli assembly possono anche essere aggiornati da una versione più recente usando l'istruzione ALTER ASSEMBLY o rimossa da SQL Server usando l'istruzione DROP ASSEMBLY.
Le informazioni sull'assembly vengono archiviate nella tabella sys.assembly_files del database in cui è installato l'assembly. La tabella sys.assembly_files contiene le colonne seguenti.
| Column | Description |
|---|---|
assembly_id |
Identificatore definito per l'assembly. Questo numero viene assegnato a tutti gli oggetti relativi allo stesso assembly. |
name |
Nome dell'oggetto. |
file_id |
Numero che identifica ogni oggetto, con il primo oggetto associato a un determinato assembly_id assegnato il valore 1. Se più oggetti sono associati allo stesso assembly_id, ogni valore di file_id successivo viene incrementato di 1. |
content |
Rappresentazione esadecimale dell'assembly o del file. |
In questa sezione
| Article | Description |
|---|---|
| Creare un di assembly | Viene descritta la creazione di assembly CLR SAFE, EXTERNAL_ACCESSe UNSAFE in SQL Server |
| Modificare un di assembly | Descrive l'aggiornamento di assembly CLR in SQL Server |
| Eliminare un di assembly | Illustra l'eliminazione di assembly CLR da SQL Server |
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 EXTERNAL_ACCESS come se fossero contrassegnati UNSAFE. È 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 che il motore di database dovrebbe considerare attendibile. For more information, see sys.sp_add_trusted_assembly.
Related content
- di sicurezza dell'integrazione con CLR
- Sicurezza dell'accesso al codice di integrazione CLR