Определяемые пользователем типы данных CLRCLR User-Defined Types

Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions)

SQL ServerSQL Serverдает возможность создавать объекты базы данных, которые запрограммированы для сборки, созданной в .NET Framework среде CLR.gives you the ability to create database objects that are programmed against an assembly created in the .NET Framework common language runtime (CLR). Объекты базы данных, которые способны пользоваться преимуществами многофункциональной модели программирования, предоставляемыми средой CLR, содержат триггеры, хранимые процедуры, функции, агрегатные функции и типы.Database objects that can take advantage of the rich programming model provided by the CLR include triggers, stored procedures, functions, aggregate functions, and types.

Примечание

По умолчанию возможность выполнять код CLR в SQL ServerSQL Server отключена.The ability to execute CLR code is set to OFF by default in SQL ServerSQL Server. Среду CLR можно включить с помощью системной хранимой процедуры sp_configure .The CLR can be enabled by using the sp_configure system stored procedure.

Начиная с SQL Server 2005 (9.x)SQL Server 2005 (9.x) , можно использовать определяемые пользователем типы для расширения системы скалярных типов сервера, что позволяет хранить объекты среды CLR в SQL ServerSQL Server базе данных.Beginning with SQL Server 2005 (9.x)SQL Server 2005 (9.x), you can use user-defined types (UDTs) to extend the scalar type system of the server, enabling storage of CLR objects in a SQL ServerSQL Server database. Определяемые пользователем типы могут состоять из несколько элементов, а их поведение может отличаться от обычных типов данных, обозначенных псевдонимами, каждый из которых состоит из одного системного типа данных SQL ServerSQL Server.UDTs can contain multiple elements and can have behaviors, differentiating them from the traditional alias data types which consist of a single SQL ServerSQL Server system data type.

Система обращается к определяемым пользователем типам как к единым объектам, поэтому их использование для сложных типов данных может негативно отразиться на производительности.Because UDTs are accessed by the system as a whole, their use for complex data types may negatively impact performance. Для моделирования сложных данных лучше подходят обычные строки и таблицы.Complex data is generally best modeled using traditional rows and tables. В SQL ServerSQL Server определяемые пользователем типы хорошо подходят для представления следующих данных:UDTs in SQL ServerSQL Server are well suited to the following:

  • Значения даты, времени, валюты и расширенные числовые типыDate, time, currency, and extended numeric types

  • Данные геопространственных приложенийGeospatial applications

  • Закодированные или зашифрованные данныеEncoded or encrypted data

Процесс разработки определяемых пользователем типов в SQL ServerSQL Server состоит из следующих шагов.The process of developing UDTs in SQL ServerSQL Server consists of the following steps:

  1. Кодирование и построение сборки, определяющей определяемый пользователем тип.Code and build the assembly that defines the UDT. Определяемые пользователем типы определяются с помощью любого языка, поддерживаемого средой CLR платформы .NET Framework и создающего проверяемый код.UDTs are defined using any of the languages supported by the.NET Framework common language runtime (CLR) that produce verifiable code. Среди таких языков Visual C# и Visual Basic .NET.This includes Visual C# and Visual Basic .NET. Доступ к данным предоставляется как к полям и свойствам класса или структуры платформы .NET Framework, а поведение определяется методами класса или структуры.The data is exposed as fields and properties of a .NET Framework class or structure, and behaviors are defined by methods of the class or structure.

  2. Регистрирует сборку.Register the assembly. Развертывание определяемых пользователем типов в проекте базы данных может быть выполнено с помощью пользовательского интерфейса Visual Studio или с помощью инструкции Transact-SQLTransact-SQL CREATE ASSEMBLY, которая копирует сборку, содержащую класс или структуру, в базу данных.UDTs can be deployed through the Visual Studio user interface in a database project, or by using the Transact-SQLTransact-SQL CREATE ASSEMBLY statement, which copies the assembly containing the class or structure into a database.

  3. Создание определяемого пользователем типа в SQL Server.Create the UDT in SQL Server. После загрузки сборки в базу данных определяемый пользователем тип создается с помощью инструкции Transact-SQLTransact-SQL, а доступ к элементам класса или структуры представляется как к элементам этого типа.Once an assembly is loaded into a host database, you use the Transact-SQLTransact-SQL CREATE TYPE statement to create a UDT and expose the members of the class or structure as members of the UDT. Определяемые пользователем типы существуют только в контексте одной базы данных, а после регистрации они не имеют зависимостей от внешних файлов, из которых были созданы.UDTs exist only in the context of a single database, and, once registered, have no dependencies on the external files from which they were created.

    Примечание

    До выхода версии SQL Server 2005 (9.x)SQL Server 2005 (9.x) определяемые пользователем типы, созданные на основе сборок платформы .NET Framework, не поддерживались.Before SQL Server 2005 (9.x)SQL Server 2005 (9.x), UDTs created from .NET Framework assemblies were not supported. Однако вы по-прежнему можете использовать SQL ServerSQL Server псевдонимы типов данных с помощью sp_addtype.However, you can still use SQL ServerSQL Server alias data types by using sp_addtype. Синтаксис CREATE TYPE можно использовать для создания собственных определяемых пользователем типов данных SQL ServerSQL Server и определяемых пользователем типов.The CREATE TYPE syntax can be used for creating both native SQL ServerSQL Server user-defined data types and UDTs.

  4. Создание таблиц, переменных или параметров с помощью определяемого пользователем типа Начиная с SQL Server 2005 (9.x)SQL Server 2005 (9.x) , определяемый пользователем тип может использоваться в качестве определения столбца таблицы, в виде переменной в Transact-SQLTransact-SQL пакете или в качестве аргумента Transact-SQLTransact-SQL функции или хранимой процедуры.Create tables, variables, or parameters using the UDT Beginning with SQL Server 2005 (9.x)SQL Server 2005 (9.x), a user-defined type can be used as the column definition of a table, as a variable in a Transact-SQLTransact-SQL batch, or as an argument of a Transact-SQLTransact-SQL function or stored procedure.

В этом разделеIn This Section

Создание определяемого пользователем типаCreating a User-Defined Type
Описывает способ создания определяемых пользователем типов.Describes how to create UDTs.

Регистрация определяемых пользователем типов в SQL ServerRegistering User-Defined Types in SQL Server
Описывает, как регистрировать определяемые пользователем типы в SQL ServerSQL Server и как управлять ими.Describes how to register and manage UDTs in SQL ServerSQL Server.

Работа с определяемыми пользователем типами в SQL ServerWorking with User-Defined Types in SQL Server
Описывает способ создания запросов при помощи определяемых пользователем типов.Describes how to create queries using UDTs.

Доступ к определяемым пользователем типам в ADO.NETAccessing User-Defined Types in ADO.NET
Описывает способ работы с определяемыми пользователем типами при помощи поставщика данных .NET Framework для SQL ServerSQL Server в ADO.NET.Describes how to work with UDTs using the .NET Framework Data Provider for SQL ServerSQL Server in ADO.NET.