Implementazione di assembly
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 di assembly
Gli assembly vengono creati in SQL Server usando l'istruzione Transact-SQL CREATE ASSEMBLY oppure nel SQL Server Management Studio usando l'editor assistito dall'assembly. Inoltre, la distribuzione di un progetto 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 utilizzando Transact-SQL
Per creare un assembly utilizzando 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 usando 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 dell'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 in 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 utilizzando Transact-SQL
Per modificare un assembly utilizzando SQL Server Management Studio
Eliminazione, disabilitazione e abilitazione di assembly
Gli assembly vengono eliminati usando l'istruzione Transact-SQL DROP ASSEMBLY o SQL Server Management Studio.
Per eliminare un assembly utilizzando Transact-SQL
Per eliminare un assembly utilizzando SQL Server Management Studio
Per impostazione predefinita, tutti gli assembly creati in SQL Server sono disabilitati dall'esecuzione. È possibile usare l'opzione clr abilitata della stored procedure di sistema di 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 abilitata per clr.
Per abilitare e disabilitare l'esecuzione degli assembly
Gestione delle versioni degli assembly
Quando un assembly viene caricato in un'istanza SQL Server, l'assembly viene archiviato e gestito nei 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. Verrà aggiornato l'assembly alla copia più recente dei moduli .NET Framework che contengono l'implementazione.
La clausola WITH UNCHECKED DATA dell'istruzione ALTER ASSEMBLY indica SQL Server di aggiornare anche gli assembly in base ai quali i dati persistenti nel database dipendono. In particolare, è necessario specificare WITH UNCHECKED DATA nei seguenti casi:
Colonne calcolate persistenti che fanno riferimento ai 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 l'assembly CLR viene aggiornato. 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 Windows modificato con dati deselezionati nelle tabelle. SQL Server contrassegna quindi tutte le tabelle che contengono dati dipendenti dall'assembly come dati deselezionati. La colonna has_unchecked_assembly_data della vista catalogo sys.tables contiene il valore 1 per le tabelle che contengono dati non controllati e 0 per le tabelle senza dati deselezionati.
Per verificare l'integrità dei dati non controllati, eseguire DBCC CHECKTABLE su tutte le tabelle contenenti dati non controllati. Se DBCC CHECKTABLE ha esito negativo è necessario eliminare le righe non valide della tabella oppure modificare il codice dell'assembly per risolvere i problemi e quindi eseguire altre istruzioni ALTER ASSEMBLY.
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
Vedere anche
Assembly (Motore di database)
Recupero di informazioni sugli assembly