Condividi tramite


sys.dm_clr_loaded_assemblies (Transact-SQL)

Restituisce una riga per ogni assembly gestito dall'utente nello spazio degli indirizzi del server. Utilizzare questa vista per identificare gli oggetti del database gestito dell'integrazione con CLR che sono in esecuzione in MicrosoftSQL Server, nonché risolvere i problemi relativi a tali oggetti.

Gli assembly sono costituiti da file DLL di codice gestito utilizzati per definire e distribuire gli oggetti di un database gestito in SQL Server. Ogni volta che un utente esegue uno di questi oggetti del database gestito, SQL Server e il CLR caricano l'assembly in cui l'oggetto del database gestito viene definito e i relativi riferimenti. L'assembly rimane caricato in SQL Server per migliorare le prestazioni. In seguito sarà infatti possibile chiamare gli oggetti del database gestito contenuti nell'assembly senza che sia necessario ricaricare l'assembly. L'assembly non viene scaricato finché la quantità di memoria in SQL Server non risulta insufficiente. Per ulteriori informazioni sugli assembly e l'integrazione con CLR, vedere Ambiente CLR. Per ulteriori informazioni sugli oggetti del database gestito, vedere Generazione di oggetti di database con l'integrazione con CLR (Common Language Runtime).

Nome colonna

Tipo di dati

Descrizione

assembly_id

int

ID dell'assembly caricato. La colonna assembly_id può essere utilizzata per cercare ulteriori informazioni sull'assembly nella vista del catalogo sys.assemblies (Transact-SQL). Si noti che il catalogo Transact-SQLsys.assemblies include solo gli assembly del database corrente. La vista sqs.dm_clr_loaded_assemblies include tutti gli assembly caricati nel server.

appdomain_address

int

Indirizzo del dominio applicazione (AppDomain) in cui viene caricato l'assembly. Tutti gli assembly di proprietà di un singolo utente vengono sempre caricati nello stesso AppDomain. La colonna appdomain_address può essere utilizzata per cercare ulteriori informazioni su AppDomain nella vista sys.dm_clr_appdomains.

load_time

datetime

Ora di caricamento dell'assembly. Si noti che l'assembly rimane caricato finché la quantità di memoria in SQL Server non risulta insufficiente e AppDomain viene scaricato. È possibile monitorare la colonna load_time per comprendere con che frequenza la quantità di memoria in SQL Server risulta insufficiente e AppDomain viene scaricato.

Autorizzazioni

È richiesta l'autorizzazione VIEW SERVER STATE nel server.

Osservazioni

La vista dm_clr_loaded_assemblies.appdomain_address dispone di una relazione molti-a-uno con dm_clr_appdomains.appdomain_address. La vista dm_clr_loaded_assemblies.assembly_id dispone di una relazione uno-a-molti con sys.assemblies.assembly_id.

Esempi

Nell'esempio seguente viene illustrato come visualizzare dettagli relativi a tutti gli assembly del database corrente che sono attualmente caricati.

select a.name, a.assembly_id, a.permission_set_desc, a.is_visible, a.create_date, l.load_time 
from sys.dm_clr_loaded_assemblies as l 
inner join sys.assemblies as a
on l.assembly_id = a.assembly_id

Nell'esempio seguente viene illustrato come visualizzare dettagli relativi all'AppDomain in cui è caricato un determinato assembly.

select appdomain_id, creation_time, db_id, user_id, state
from sys.dm_clr_appdomains a
where appdomain_address = 
(select appdomain_address 
 from sys.dm_clr_loaded_assemblies
 where assembly_id = 555)