CLR 用户定义的类型

适用范围:SQL Server

SQL Server 使你能够创建针对 .NET Framework 公共语言运行时(CLR)中创建的程序集编程的数据库对象。 数据库对象包括触发器、存储过程、函数、聚合函数和类型,它们可以利用 CLR 提供的丰富的编程模型。

注意

默认情况下,执行 CLR 代码的功能在 SQL Server 中设置为 OFF。 可以使用 sp_configure 系统存储过程启用 CLR。

可以使用用户定义的类型(UDT)扩展服务器的标量类型系统,从而在 SQL Server 数据库中存储 CLR 对象。 UDT 可以包含多个元素,并且可以具有行为,并将它们与由单个 SQL Server 系统数据类型组成的传统别名数据类型区分开来。

由于整个系统都会访问 UDT,因此它们对复杂数据类型的使用可能会对性能产生负面影响。 通常,使用传统的行和表可以对复杂数据进行最佳建模。 SQL Server 中的 UDT 非常适合以下类型的数据:

  • 日期、时间、货币和扩展数字类型
  • 地理空间应用程序
  • 编码或加密数据

在 SQL Server 中开发 UDT 的过程包括以下步骤:

  1. 编写代码并生成定义 UDT 的程序集。 UDT 使用 .NET Framework 公共语言运行时(CLR)支持的任何语言来定义,这些语言生成可验证代码。 这包括 C# 和 Visual Basic .NET。 数据作为 .NET Framework 类或结构的字段和属性公开,其行为由类或结构的方法定义。

  2. 注册 程序集。 UDT 可以通过数据库项目中的 Visual Studio 用户界面进行部署,也可以使用 Transact-SQL CREATE ASSEMBLY 语句将包含类或结构的程序集复制到数据库中。

  3. 在 SQL Server 中创建 UDT。 将程序集加载到主机数据库中后,可以使用 Transact-SQL CREATE TYPE 语句创建 UDT,并将类或结构的成员公开为 UDT 的成员。 UDT 仅在单个数据库的上下文中存在,一旦注册,则不依赖于从其创建它们的外部文件。

  4. 使用 UDT 创建表、变量或参数。 用户定义的类型可用作表的列定义、作为 Transact-SQL 批处理中的变量或 Transact-SQL 函数或存储过程的参数。

在本部分中

描述
创建用户定义的类型 描述如何创建 UDT。
在 SQL Server 中注册用户定义的类型 介绍如何在 SQL Server 中注册和管理 UDT。
在 SQL Server 中使用用户定义的类型 描述如何使用 UDT 创建查询。
访问 ADO.NET中的用户定义类型 介绍如何在 ADO.NET 中使用适用于 SQL Server 的 .NET Framework 数据提供程序处理 UDT。