sys.dm_clr_properties (Transact-SQL)

对于与 SQL Server 公共语言运行时 (CLR) 集成相关的每个属性(包括宿主 CLR 的版本和状态)返回一行。 通过运行 CREATE ASSEMBLYALTER ASSEMBLYDROP ASSEMBLY 语句,或通过执行任何 CLR 例程、类型或触发器来初始化宿主 CLR。 sys.dm_clr_properties 视图不指定是否已在服务器上启用用户 CLR 代码的执行。 通过使用 sp_configure 存储过程并将 clr enabled 选项设置为 1 可以启用用户 CLR 代码的执行。

sys.dm_clr_properties 视图包含 name 和 value 列。 此视图中的每一行都提供了有关宿主 CLR 的某个属性的详细信息。 使用此视图搜集有关宿主 CLR 的信息,例如 CLR 安装目录、CLR 版本和宿主 CLR 的当前状态。 此视图可以帮助您确定 CLR 集成代码之所以无效是否是因为服务器上的 CLR 安装存在问题。

列名

数据类型

说明

name

nvarchar(128)

属性的名称。

value

nvarchar(128)

属性的值。

属性

directory 属性指示在服务器上安装 .NET Framework 的目录。 在服务器上可能存在多个 .NET Framework 安装,该属性的值标识了 SQL Server 正在使用的安装。

version 属性指示服务器上的 .NET Framework 和宿主 CLR 的版本。

sys.dm_clr_properties 动态托管视图可为 state 属性返回六个不同的值,这些值反映 SQL Server 宿主 CLR 的状态。 它们是:

  • Mscoree 未加载。

  • Mscoree 已加载。

  • 带 mscoree 的锁定 CLR 版本。

  • CLR 已初始化。

  • CLR 初始化永久失败。

  • CLR 已停止。

Mscoree is not loaded 和 Mscoree is loaded 状态在服务器启动时显示宿主 CLR 初始化的进度,用户看不到该状态。

在未使用宿主 CLR 因此它尚未初始化的情况下,可能会看到 Locked CLR version with mscoree 状态。 初次执行 DDL 语句(如 CREATE ASSEMBLY (Transact-SQL))或托管数据库对象时初始化宿主 CLR。

CLR is initialized 状态指示宿主 CLR 已成功初始化。 请注意,这并不能指示是否启用了用户 CLR 代码的执行。 如果先启用用户 CLR 代码的执行,然后使用 Transact-SQL sp_configure 存储过程将其禁用,则该状态值仍为 CLR is initialized。

CLR initialization permanently failed 状态指示宿主 CLR 初始化已失败。 原因可能是内存不足,也可能是 SQL Server 与 CLR 的宿主握手失败。 在此情况下,将引发错误消息 6512 或 6513。

仅当 SQL Server 正处于关闭过程中时,才能看见 CLR is stopped state。

注释

该视图的属性和值可能由于 CLR 集成功能获得增强而在将来版本的 SQL Server 中发生更改。

权限

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

示例

以下示例检索有关宿主 CLR 的信息:

select name, value 
from sys.dm_clr_properties

请参阅

参考

动态管理视图和函数 (Transact-SQL)

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