CLR 用户定义类型
SQL Server 用于创建基于以 .NET Framework 公共语言运行库 (CLR) 创建的程序集而编写的数据库对象。数据库对象包括触发器、存储过程、函数、聚合函数和类型,它们可以利用 CLR 提供的丰富的编程模型。
注意 |
---|
默认情况下,在 SQL Server 中关闭了执行 CLR 代码的功能。通过使用 sp_configure 系统存储过程可以启用 CLR。 |
从 SQL Server 2005 开始,可以使用用户定义类型 (UDT) 来扩展服务器的标量类型系统,从而启用在 SQL Server 数据库中存储 CLR 对象的功能。UDT 可以包含多个元素,还可以有行为,这使它们与由单个 SQL Server 系统数据类型组成的传统别名数据类型区分开来。
因为 UDT 作为整体供系统访问,所以其对复杂数据类型的使用可能会对性能有负面影响。通常,使用传统的行和表可以对复杂数据进行最佳建模。SQL Server 中的 UDT 非常适合以下各项:
日期、时间、货币和扩展数字类型
地理空间应用程序
编码或加密数据
在 SQL Server 中开发 UDT 的过程由以下步骤组成:
编码和生成定义 UDT 的程序集。 用于定义 UDT 的语言可以是受 .NET Framework 公共语言运行库 (CLR) 支持并且能够产生可验证代码的任何语言。这包括 Visual C# 和 Visual Basic .NET。数据作为 .NET Framework 类或结构的字段和属性公开,其行为由类或结构的方法定义。
注册程序集。 可以通过在数据库项目中使用 Visual Studio 用户界面,或通过使用 Transact-SQL CREATE ASSEMBLY 语句(该语句将包含类或结构的程序集复制到数据库中),来部署 UDT。
在 SQL Server 中创建 UDT。 一旦程序集加载到宿主数据库中,则使用 Transact-SQL CREATE TYPE 语句创建 UDT,并将该类或结构的成员作为此 UDT 的成员公开。UDT 仅在单个数据库的上下文中存在,一旦注册,则不依赖于从其创建它们的外部文件。
注意 在 SQL Server 2005 之前,不支持从 .NET Framework 程序集创建的 UDT。但是,仍然可以通过使用 sp_addtype,在 SQL Server 2005 和 SQL Server 2008 中使用 SQL Server 别名数据类型。本机 SQL Server 用户定义数据类型和 UDT 都可以用 CREATE TYPE 语法创建。
**使用 UDT 创建表、变量或参数 ** 从 SQL Server 2005 开始,用户定义类型可以用作表的列定义、用作 Transact-SQL 批中的变量或用作 Transact-SQL 函数或存储过程的参数。有关其他信息,请参阅使用 CLR 用户定义类型。
本节内容
创建用户定义类型
描述如何创建 UDT。在 SQL Server 中注册用户定义类型
描述如何在 SQL Server 中注册和管理 UDT。使用 SQL Server 中的用户定义类型
描述如何使用 UDT 创建查询。在 ADO.NET 中访问用户定义类型
描述如何在 ADO.NET 中使用用于 .NET Framework Data Provider for SQL Server 来处理 UDT。