Condividi tramite


Assembly - Implementazione

Si applica a: SQL Server

In questo argomento vengono fornite informazioni sull'implementazione e l'utilizzo degli assembly nei database, suddivise nelle sezioni seguenti:

  • Creazione di assembly

  • Modifica di assembly

  • Eliminazione, disabilitazione e abilitazione di assembly

  • Gestione delle versioni degli assembly

Creazione degli 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.

Per creare un assembly tramite Transact-SQL

Per creare un assembly tramite SQL Server Management Studio

Modifica di 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 di assembly. È possibile modificare un assembly quando si desidera allo scopo di:

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

  • 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 sono stati 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.

Per modificare un assembly tramite Transact-SQL

Per modificare un assembly tramite SQL Server Management Studio

Eliminazione, disabilitazione e abilitazione di assembly

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

Per eliminare un assembly tramite Transact-SQL

Per eliminare un assembly tramite 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 stored procedure di sistema sp_configure per disabilitare o abilitare l'esecuzione di tutti gli assembly caricati in SQL Server. La disabilitazione dell'esecuzione degli assembly impedisce l'esecuzione di funzioni CRL (Common Language Runtime), stored procedure, trigger, funzioni di aggregazione e tipi definiti dall'utente e arresta le funzioni attualmente in esecuzione. La disabilitazione dell'esecuzione degli assembly non ne impedisce la creazione, la modifica o l'eliminazione. Per altre informazioni, vedere l'opzione di configurazione del server clr enabled.

Per disabilitare e abilitare l'esecuzione di assembly

Gestione delle 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 si modifica un assembly, è necessario eseguire un'istruzione ALTER ASSEMBLY per aggiornare l'assembly nel database. In questo modo, l'assembly verrà aggiornato alla copia più recente dei moduli .NET Framework che ne contiene l'implementazione.

La clausola WITH UNCHECKED DATA 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 nei seguenti casi:

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

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

Attenzione

Se non è specificata la clausola WITH UNCHECKED DATA, SQL Server tenterà di impedire l'esecuzione dell'istruzione ALTER ASSEMBLY nel caso in cui la nuova versione dell'assembly modifichi i dati presenti in tabelle, indici o altre posizioni persistenti. Tuttavia, SQL Server 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. Quando si esegue l'istruzione ALTER ASSEMBLY è pertanto necessario verificare che non vi siano discrepanze tra il risultato di una determinata espressione e il valore basato su tale espressione archiviato nell'assembly.

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

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 colonna has_unchecked_assembly_data della vista del catalogo sys.tables 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 non controllati. Se DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS ha esito negativo, è necessario eliminare le righe della tabella non valide o modificare il codice dell'assembly per risolvere i problemi e quindi eseguire istruzioni ALTER ASSEMBLY aggiuntive.

ALTER ASSEMBLY modifica la versione dell'assembly. Le impostazioni cultura e il token di chiave pubblica dell'assembly rimangono 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 del computer per l'associazione delle 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 operazioni 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 avrà esito negativo.

Per aggiornare la versione di un assembly

Vedi anche

Assembly (motore di database)
Recupero di informazioni sugli assembly