Condividi tramite


Gestire assembly di integrazione CLR

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.