禁用“CLR”时,“HierarchyID”类型如何工作?

got*_*tqn 6 sql-server configuration sql-server-2012 sql-clr

以下语句sp_configure 'clr enabled'返回:

name        minimum maximum config_value    run_value
clr enabled 0       1       0               0
Run Code Online (Sandbox Code Playgroud)

我认为这意味着没有CLR对象;但是,如果我执行以下语句,我会得到这些:

SELECT * FROM sys.assembly_files
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

SELECT * FROM sys.assembly_types
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我已经读过The HierarchyID type is available to CLR clients as the SqlHierarchyId data type.

如何在没有CLR启用的情况下使用它,为什么我需要启用它来创建我自己的CLR对象?

Pau*_*ite 10

clr enabled服务器配置选项只控制是否用户组件可以通过SQL Server实例上运行。

hierarchyidgeometrygeography类型系统CLR类型。它们包含在系统程序集中,因此无论clr enabled设置如何都可用。

同样,依赖 CLR 集成的其他系统功能,例如FORMAT(SQL Server 2012 以后),即使clr enabled关闭也是可用的。

如果需要hierarchyid在自定义 CLR 例程中操作数据,则需要通过此设置启用用户 clr 程序集。

另请参阅:分层数据 (SQL Server)