sys.dm_clr_loaded_assemblies (Transact-SQL)

Si applica a:SQL Server

Restituisce una riga per ogni assembly gestito dall'utente nello spazio degli indirizzi del server. Usare questa vista per comprendere e risolvere i problemi relativi agli oggetti di database gestiti di integrazione CLR in esecuzione in Microsoft SQL Server.

Gli assembly sono file DLL di codice gestito usati per definire e distribuire oggetti di database gestiti in SQL Server. Ogni volta che un utente esegue uno di questi oggetti di database gestiti, SQL Server e CLR caricano l'assembly (e i relativi riferimenti) in cui è definito l'oggetto di database gestito. L'assembly rimane caricato in SQL Server per migliorare le prestazioni, in modo che gli oggetti di database gestiti contenuti nell'assembly possano essere chiamati in futuro senza dover ricaricare l'assembly. L'assembly non viene scaricato fino a quando SQL Server non viene sottoposto a pressione sulla memoria. Per altre informazioni sugli assembly e sull'integrazione con CLR, vedere Ambiente ospitato CLR. Per altre informazioni sugli oggetti di database gestiti, vedere Compilazione di oggetti di database con l'integrazione CLR (Common Language Runtime).

Nome colonna Tipo di dati Descrizione
assembly_id int ID dell'assembly caricato. Il assembly_id può essere usato per cercare altre informazioni sull'assembly nella vista del catalogo sys.assemblies (Transact-SQL). Si noti che il catalogo sys.assemblies Transact-SQL mostra solo gli assembly nel database corrente. La visualizzazione sqs.dm_clr_loaded_assemblies mostra 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. Il appdomain_address può essere usato per cercare altre informazioni sull'AppDomainnella visualizzazione sys.dm_clr_appdomains.
load_time datetime Ora di caricamento dell'assembly. Si noti che l'assembly rimane caricato fino a quando SQL Server non è sotto pressione di memoria e scarica l'AppDomain. È possibile monitorare load_time per comprendere la frequenza con cui SQL Server viene sottoposto a pressione di memoria e scarica l'AppDomain.

Autorizzazioni

È richiesta l'autorizzazione VIEW SERVER STATE per il server.

Autorizzazioni per SQL Server 2022 e versioni successive

È richiesta l'autorizzazione VIEW SERVER PERFORMANCE STATE nel server.

Osservazioni:

La visualizzazione dm_clr_loaded_assemblies.appdomain_address ha una relazione molti-a-uno con dm_clr_appdomains.appdomain_address. La vista dm_clr_loaded_assemblies.assembly_id ha 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 i dettagli dell'AppDomain in cui viene caricato un determinato assembly.

SELECT appdomain_id, creation_time, db_id, user_id, state  
FROM sys.dm_clr_appdomains AS a  
WHERE appdomain_address =   
(SELECT appdomain_address   
 FROM sys.dm_clr_loaded_assemblies  
 WHERE assembly_id = 555);  

Vedi anche

Viste a gestione dinamica correlate a Common Language Runtime (Transact-SQL)