CLR 用户定义的类型

适用范围:SQL Server

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

注意

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

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

因为 UDT 作为整体供系统访问,所以其对复杂数据类型的使用可能会对性能有负面影响。 通常,使用传统的行和表可以对复杂数据进行最佳建模。 SQL Server 中的 UDT 非常适合以下各项:

  • 日期、时间、货币和扩展数字类型

  • 地理空间应用程序

  • 编码或加密数据

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

  1. 编写代码并生成定义 UDT 的程序集。 使用生成可验证代码的 .NET Framework 公共语言运行时 (CLR) 所支持的任何语言都可以定义 UDT, 这包括 Visual 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 仅在单个数据库的上下文中存在,一旦注册,则不依赖于从其创建它们的外部文件。

    注意

    在 SQL Server 2005(9.x)之前,不支持从 .NET Framework 程序集创建的 UDT。 但是,仍可以使用 sp_addtypeSQL Server 别名数据类型。 CREATE TYPE 语法可用于创建本机 SQL Server 用户定义的数据类型和 UDT。

  4. 使用 UDT 从 SQL Server 2005(9.x 开始)创建表、变量或参数,用户定义类型可用作表的列定义、Transact-SQL 批处理中的变量或 Transact-SQL 函数或存储过程的参数。

本节内容

创建用户定义类型
描述如何创建 UDT。

在 SQL Server 中注册用户定义类型
介绍如何在 SQL Server 中注册和管理 UDT。

使用 SQL Server 中的用户定义类型
描述如何使用 UDT 创建查询。

在 ADO.NET 中访问用户定义类型
介绍如何在 ADO.NET 中使用适用于 SQL Server 的 .NET Framework 数据提供程序处理 UDT。