sys.dm_clr_properties (Transact-SQL)
适用于:SQL Server
Azure SQL 托管实例
Analytics Platform System (PDW)
返回与 SQL Server 公共语言运行时 (CLR) 集成相关的每个属性的行,包括托管 CLR 的版本和状态。 托管 CLR 通过运行 CREATE ASSEMBLY、ALTER ASSEMBLY 或 DROP ASSEMBLY 语句,或者执行任何 CLR 例程、类型或触发器来初始化。 sys.dm_clr_properties视图未指定是否已在服务器上启用用户 CLR 代码的执行。 通过使用启用了 clr 的选项设置为 1 的 sp_configure 存储过程来启用用户 CLR 代码的执行。
sys.dm_clr_properties视图包含名称和值列。 此视图中的每一行都提供了有关宿主 CLR 的某个属性的详细信息。 使用此视图搜集有关宿主 CLR 的信息,例如 CLR 安装目录、CLR 版本和宿主 CLR 的当前状态。 此视图可以帮助您确定 CLR 集成代码之所以无效是否是因为服务器上的 CLR 安装存在问题。
列名称 | 数据类型 | 说明 |
---|---|---|
name | nvarchar(128) | 属性的名称。 |
value | nvarchar(128) | 属性的名称。 |
属性
目录属性指示在服务器上安装了 .NET Framework 的目录。 服务器计算机上可能有多个 .NET Framework 安装,此属性的值标识了 SQL Server 正在使用的安装。
version 属性指示服务器上 .NET Framework 和托管 CLR 的版本。
sys.dm_clr_properties动态托管视图可以返回状态属性的六个不同的值,这反映了 SQL Server 托管 CLR 的状态。 它们是:
Mscoree 未加载。
Mscoree 已加载。
带 mscoree 的锁定 CLR 版本。
CLR 已初始化。
CLR 初始化永久失败。
CLR 已停止。
未加载 Mscoree 并且 Mscoree 已加载状态显示服务器启动时托管 CLR 初始化的进展,并且不太可能看到。
在未使用托管 CLR 的情况下,可能会看到具有 mscoree 状态的锁定 CLR 版本,因此尚未初始化它。 首次执行 DDL 语句(如 CREATE ASSEMBLY(Transact-SQL)或托管数据库对象时,初始化托管 CLR。
CLR 已初始化状态指示已成功初始化托管 CLR。 请注意,这并不能指示是否启用了用户 CLR 代码的执行。 如果首先启用用户 CLR 代码的执行,然后使用 Transact-SQL sp_configure 存储过程禁用,则状态值仍将是 CLR 初始化。
CLR 初始化永久失败状态表示托管 CLR 初始化失败。 内存压力可能是原因,也可能是 SQL Server 和 CLR 之间托管握手失败的结果。 在此情况下,将引发错误消息 6512 或 6513。
仅当 SQL Server 正在关闭时,才会看到 CLR 已停止状态。
注解
由于 CLR 集成功能的增强,此视图的属性和值可能会在 SQL Server 的未来版本中更改。
权限
对于 SQL Server 和 SQL 托管实例,需要 VIEW SERVER STATE
权限。
在SQL 数据库基本、S0 和 S1 服务目标以及弹性池中的数据库、服务器管理员帐户、Microsoft Entra 管理员帐户或服务器角色的成员##MS_ServerStateReader##
身份是必需的。 对于所有其他 SQL 数据库服务目标,需要数据库的 VIEW DATABASE STATE
权限或 ##MS_ServerStateReader##
服务器角色中的成员身份。
SQL Server 2022 及更高版本的权限
要求对服务器具有 VIEW SERVER PERFORMANCE STATE 权限。
示例
以下示例检索有关宿主 CLR 的信息:
SELECT name, value
FROM sys.dm_clr_properties;