Implementazione di assembly

Si applica a: SQL Server

Questo articolo fornisce informazioni sulle aree seguenti che consentono di implementare e usare assembly nel database:

  • Creazione di assembly
  • Modifica di assembly
  • Eliminazione, disabilitazione e abilitazione di assembly
  • Gestione delle versioni degli assembly

Creare assembly

Gli assembly vengono creati in SQL Server usando l'istruzione Transact-SQL CREATE ASSEMBLY o in SQL Server Management Studio tramite l'editor assistito di assembly. Inoltre, la distribuzione di un progetto DI SQL Server in Microsoft Visual Studio registra un assembly nel database specificato per il progetto. Per altre informazioni, vedere Distribuzione di oggetti di database CLR.

Modificare gli assembly

Gli assembly vengono modificati in SQL Server usando l'istruzione Transact-SQL ALTER ASSEMBLY o in SQL Server Management Studio tramite l'editor assistito da assembly.

È possibile modificare un assembly quando si desidera eseguire le azioni seguenti:

  • Modificare l'implementazione dell'assembly caricando una versione più recente del file binario dell'assembly. Per altre informazioni, vedere Gestire le versioni degli assembly più avanti in questo articolo.

  • Modificare il set di autorizzazioni dell'assembly. Per altre informazioni, vedere Progettazione di assembly.

  • Modificare la visibilità dell'assembly. Gli assembly visibili sono disponibili per fare riferimento a SQL Server. Gli assembly non visibili non sono disponibili, anche se vengono caricati nel database. Per impostazione predefinita, gli assembly caricati in un'istanza di SQL Server sono visibili.

  • Aggiungere o eliminare un file di debug o di origine associato all'assembly.

Eliminare, disabilitare e abilitare gli assembly

Gli assembly vengono eliminati usando l'istruzione Transact-SQL DROP ASSEMBLY o SQL Server Management Studio.

Per impostazione predefinita, tutti gli assembly creati in SQL Server sono disabilitati dall'esecuzione. È possibile usare l'opzione clr enabled della sp_configure stored procedure di sistema per disabilitare o abilitare l'esecuzione di tutti gli assembly caricati in SQL Server. La disabilitazione dell'esecuzione di assembly impedisce l'esecuzione di funzioni CLR (Common Language Runtime), stored procedure, trigger, aggregazioni e tipi definiti dall'utente e arresta le funzioni attualmente in esecuzione. La disabilitazione dell'esecuzione dell'assembly non disabilita la possibilità di creare, modificare o eliminare assembly. Per altre informazioni, vedere Configurazione del server: clr enabled.

Per altre informazioni, vedere sp_configure.

Gestire le versioni degli assembly

Quando un assembly viene caricato in un'istanza di SQL Server, l'assembly viene archiviato e gestito all'interno dei cataloghi del sistema di database. Tutte le modifiche apportate alla definizione dell'assembly in Microsoft .NET Framework devono essere propagate all'assembly archiviato nel catalogo di database.

Quando è necessario modificare un assembly, è necessario rilasciare un'istruzione ALTER ASSEMBLY per aggiornare l'assembly nel database. Questa istruzione aggiorna l'assembly alla copia più recente dei moduli .NET Framework che ne contengono l'implementazione.

La WITH UNCHECKED DATA clausola dell'istruzione ALTER ASSEMBLY indica a SQL Server di aggiornare anche gli assembly su cui dipendono i dati persistenti nel database. In particolare, è necessario specificare WITH UNCHECKED DATA se esiste uno dei seguenti elementi:

  • Colonne calcolate persistenti che fanno riferimento a metodi nell'assembly, direttamente o indirettamente, tramite funzioni o metodi Transact-SQL.

  • Colonne di un tipo CLR definito dall'utente che dipendono dall'assembly e il tipo implementa un UserDefined formato di serializzazione (non).Native

Attenzione

Se WITH UNCHECKED DATA non è specificato, SQL Server tenta di impedire ALTER ASSEMBLY l'esecuzione se la nuova versione dell'assembly influisce sui dati esistenti in tabelle, indici o altri siti persistenti. SQL Server, tuttavia, non garantisce che le colonne calcolate, gli indici, le viste indicizzate o le espressioni siano coerenti con le routine e i tipi sottostanti quando viene aggiornato l'assembly CLR. Prestare attenzione quando si esegue ALTER ASSEMBLY per assicurarsi che non esista alcuna mancata corrispondenza tra il risultato di un'espressione e un valore basato su tale espressione archiviata nell'assembly.

Solo i membri del db_owner e db_ddlowner ruolo predefinito del database possono essere eseguiti ALTER ASSEMBLY usando la WITH UNCHECKED DATA clausola .

SQL Server invia un messaggio al registro eventi dell'applicazione di Windows che l'assembly è stato modificato con dati non controllati nelle tabelle. SQL Server contrassegna quindi tutte le tabelle che contengono dati dipendenti dall'assembly come dati non controllati. La has_unchecked_assembly_data colonna della sys.tables vista del catalogo contiene il valore 1 per le tabelle che contengono dati non controllati e 0 per le tabelle senza dati deselezionati.

Per risolvere l'integrità dei dati non controllati, eseguire DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS su ogni tabella con dati deselezionati. In caso DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS di errore, è necessario eliminare le righe della tabella non valide o modificare il codice assembly per risolvere i problemi e quindi rilasciare altre ALTER ASSEMBLY istruzioni.

ALTER ASSEMBLY modifica la versione dell'assembly. La lingua e il token di chiave pubblica dell'assembly restano invariati. SQL Server non consente la registrazione di versioni diverse di un assembly con lo stesso nome, impostazioni cultura e chiave pubblica.

Interazioni con i criteri a livello di computer per l'associazione di versioni

Se i riferimenti agli assembly archiviati in SQL Server vengono reindirizzati a versioni specifiche usando criteri di pubblicazione o criteri di amministratore a livello di computer, è necessario eseguire una delle azioni seguenti:

  • Verificare che la nuova versione alla quale viene eseguito il reindirizzamento si trovi nel database.

  • Modificare qualsiasi istruzione nei file di criteri esterni del computer o nei criteri editore per assicurarsi che facciano riferimento alla specifica versione presente nel database.

In caso contrario, un tentativo di caricare una nuova versione dell'assembly nell'istanza di SQL Server ha esito negativo.

Per altre informazioni, vedere ALTER ASSEMBLY.