sys.dm_clr_properties (Transact-SQL)
对于与 SQL Server 公共语言运行时 (CLR) 集成相关的每个属性(包括宿主 CLR 的版本和状态)返回一行。 通过运行 CREATE ASSEMBLY、ALTER ASSEMBLY 或 DROP 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