sys.dm_clr_loaded_assemblies (Transact-SQL)

Aplica-se a: SQL Server

Retorna uma linha para cada assembly gerenciado pelo usuário, carregada no espaço de endereço do servidor. Use essa exibição para entender e solucionar problemas de objetos de banco de dados gerenciados de integração CLR que estão sendo executados no Microsoft SQL Server.

Assemblies são arquivos DLL de código gerenciado usados para definir e implantar objetos de banco de dados gerenciados no SQL Server. Sempre que um usuário executa um desses objetos de banco de dados gerenciado, o SQL Server e o CLR carregam o assembly (e suas referências) no qual o objeto de banco de dados gerenciado é definido. O assembly permanece carregado no SQL Server para aumentar o desempenho, para que os objetos de banco de dados gerenciados contidos no assembly possam ser chamados no futuro sem precisar recarregar o assembly. O assembly não é descarregado até que o SQL Server fique sob pressão de memória. Para obter mais informações sobre assemblies e integração CLR, consulte Ambiente hospedado CLR. Para obter mais informações sobre objetos de banco de dados gerenciados, consulte Criando objetos de banco de dados com integração CLR (Common Language Runtime).

Nome da coluna Tipo de dados Descrição
assembly_id int ID do assembly carregado. O assembly_id pode ser usado para pesquisar mais informações sobre o assembly na exibição de catálogo sys.assemblies (Transact-SQL). Observe que o catálogo sys.assemblies do Transact-SQL mostra assemblies somente no banco de dados atual. A exibição sqs.dm_clr_loaded_assemblies mostra todos os assemblies carregados no servidor.
appdomain_address int Endereço do domínio do aplicativo (AppDomain) no qual o assembly é carregado. Todos os assemblies pertencentes a um único usuário são sempre carregados no mesmo AppDomain. O appdomain_address pode ser usado para pesquisar mais informações sobre o AppDomain no modo de exibição sys.dm_clr_appdomains .
load_time datetime Hora em que o assembly foi carregado. Observe que o assembly permanece carregado até que o SQL Server esteja sob pressão de memória e descarregue o AppDomain. Você pode monitorar load_time para entender com que frequência o SQL Server fica sob pressão de memória e descarrega o AppDomain.

Permissões

, é necessário ter permissão VIEW SERVER STATE no servidor.

Permissões do SQL Server 2022 e posteriores

É necessária a permissão VIEW SERVER PERFORMANCE STATE no servidor.

Comentários

A exibição dm_clr_loaded_assemblies.appdomain_address tem uma relação muitos para um com dm_clr_appdomains.appdomain_address. A exibição dm_clr_loaded_assemblies.assembly_id tem uma relação um-para-muitos com sys.assemblies.assembly_id.

Exemplos

O exemplo a seguir mostra como exibir detalhes de todos os assemblies no banco de dados atual atualmente carregados.

 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;  

O exemplo a seguir mostra como exibir detalhes do AppDomain no qual um determinado assembly é carregado.

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);  

Confira também

Exibições de gerenciamento dinâmico relacionadas ao Common Language Runtime (Transact-SQL)