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 的过程包括以下步骤:
编写代码并生成定义 UDT 的程序集。 UDT 使用 .NET Framework 公共语言运行时(CLR)支持的任何语言来定义,这些语言生成可验证代码。 这包括 C# 和 Visual Basic .NET。 数据作为 .NET Framework 类或结构的字段和属性公开,其行为由类或结构的方法定义。
注册 程序集。 UDT 可以通过数据库项目中的 Visual Studio 用户界面进行部署,也可以使用 Transact-SQL
CREATE ASSEMBLY
语句将包含类或结构的程序集复制到数据库中。在 SQL Server 中创建 UDT。 将程序集加载到主机数据库中后,可以使用 Transact-SQL CREATE TYPE 语句创建 UDT,并将类或结构的成员公开为 UDT 的成员。 UDT 仅在单个数据库的上下文中存在,一旦注册,则不依赖于从其创建它们的外部文件。
使用 UDT 创建表、变量或参数。 用户定义的类型可用作表的列定义、作为 Transact-SQL 批处理中的变量或 Transact-SQL 函数或存储过程的参数。
在本部分中
品 | 描述 |
---|---|
创建用户定义的类型 | 描述如何创建 UDT。 |
在 SQL Server 中注册用户定义的类型 | 介绍如何在 SQL Server 中注册和管理 UDT。 |
在 SQL Server 中使用用户定义的类型 | 描述如何使用 UDT 创建查询。 |
访问 ADO.NET中的用户定义类型 | 介绍如何在 ADO.NET 中使用适用于 SQL Server 的 .NET Framework 数据提供程序处理 UDT。 |