sys.dm_clr_loaded_assemblies (Transact-SQL)

适用于:SQL Server

为加载到服务器地址空间的每个托管用户程序集返回一行。 使用此视图可以了解在 Microsoft SQL Server 中执行的 CLR 集成托管数据库对象并对其进行故障排除。

程序集是托管代码 DLL 文件,用于在 SQL Server 中定义和部署托管数据库对象。 每当用户执行其中一个托管数据库对象时,SQL Server和 CLR 加载程序集 (及其引用) 在其中定义托管数据库对象。 程序集保持加载SQL Server以提高性能,以便将来可以调用程序集中包含的托管数据库对象,而无需重新加载程序集。 在SQL Server出现内存压力之前,不会卸载程序集。 有关程序集和 CLR 集成的详细信息,请参阅 CLR 托管环境。 有关托管数据库对象的详细信息,请参阅 使用公共语言运行时生成数据库对象 (CLR) 集成

列名称 数据类型 说明
assembly_id int 已加载程序集的 ID。 assembly_id可用于在 sys.assemblies (Transact-SQL) 目录视图中查找有关程序集的详细信息。 请注意,Transact-SQL sys.assemblies 目录仅显示当前数据库中的程序集。 sqs.dm_clr_loaded_assemblies视图显示服务器上所有已加载的程序集。
appdomain_address int 加载程序集的应用程序域 (AppDomain) 的地址。 单个用户拥有的所有程序集始终加载在同一 个 AppDomain 中appdomain_address可用于在sys.dm_clr_appdomains视图中查找有关 AppDomain 的详细信息。
load_time datetime 程序集的加载时间。 请注意,程序集将保持加载状态,直到SQL Server处于内存压力之下并卸载 AppDomain。 可以监视load_time,以了解SQL Server内存压力和卸载 AppDomain 的频率。

权限

要求具有服务器的 VIEW SERVER STATE 权限。

SQL Server 2022 及更高版本的权限

需要对服务器具有 VIEW SERVER PERFORMANCE STATE 权限。

注解

dm_clr_loaded_assemblies.appdomain_address 视图与 dm_clr_appdomains.appdomain_address 具有多对一关系。 dm_clr_loaded_assemblies.assembly_id 视图与 sys.assemblies.assembly_id 具有一对多关系。

示例

以下示例显示如何查看当前加载的数据库中所有程序集的详细信息。

 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;  

以下示例演示如何查看在其中加载给定程序集的 AppDomain 的详细信息。

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

另请参阅

与公共语言运行时有关的动态管理视图 (Transact-SQL)