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.
- Con Transact-SQL: CREATE ASSEMBLY (Transact-SQL)
- Con SQL Server Management Studio: Assembly - Proprietà
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.
- Con Transact-SQL: ALTER ASSEMBLY (Transact-SQL)
- Con SQL Server Management Studio: Assembly - Proprietà
È 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.
- Con Transact-SQL: DROP ASSEMBLY (Transact-SQL)
- Con SQL Server Management Studio: Eliminare oggetti
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.