sys.dm_clr_properties (Transact-SQL)

适用于:SQL ServerAzure SQL 托管实例Analytics Platform System (PDW)

返回与 SQL Server 公共语言运行时 (CLR) 集成相关的每个属性的行,包括托管 CLR 的版本和状态。 托管 CLR 通过运行 CREATE AS标准版MBLYALTER AS标准版MBLYDROP AS标准版MBLY 语句或执行任何 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 AS标准版MBLY (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;  

另请参阅

动态管理视图和函数 (Transact-SQL)
公共语言运行时相关的动态管理视图 (Transact-SQL)