Compartilhar via


sys.dm_clr_loaded_assemblies (Transact-SQL)

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 gerenciar problemas de objetos de banco de dados gerenciados pela integração CLR que estão sendo executados em MicrosoftSQL Server.

Assemblies são arquivos de código DLL gerenciados, usados para definir e implantar objetos de banco de dados gerenciados em SQL Server. Sempre que um usuário executa um desses objetos de banco de dados gerenciados, 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 aprimorar o desempenho, de forma que os objetos de banco de dados gerenciados contidos no assembly possam ser chamados no futuro sem a necessidade de recarregar o assembly. O assembly não é descarregado até que o SQL Server sofra pressão de memória. Para obter mais informações sobre assemblies e integração CLR, consulte Ambiente hospedado de 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 consultar mais informações sobre o assembly na exibição de catálogo sys.assemblies (Transact-SQL). Observe que o catálogo Transact-SQLsys.assemblies mostra somente assemblies 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 de propriedade de um único usuário são sempre carregados no mesmo AppDomain. O appdomain_address pode ser usado para consultar mais informações sobre o AppDomain na 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 sofra pressão de memória e descarrega o AppDomain. Você pode monitorar o load_time para entender com que freqüência o SQL Server sofre pressão de memória e descarrega o AppDomain.

Permissões

Requer a permissão VIEW SERVER STATE no servidor.

Comentários

A exibição dm_clr_loaded_assemblies.appdomain_address tem uma relação de muitos para um com dm_clr_appdomains.appdomain_address. A exibição dm_clr_loaded_assemblies.assembly_id tem uma relação de muitos para um 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 seguinte mostra como exibir detalhes do AppDomain no qual um determinado assembly está carregado.

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)