Определяемые пользователем типы CLR

Область применения: SQL Server

SQL Server позволяет создавать объекты базы данных, программируемые для сборки, созданной в среде CLR платформа .NET Framework. Объекты базы данных, которые способны пользоваться преимуществами многофункциональной модели программирования, предоставляемыми средой CLR, содержат триггеры, хранимые процедуры, функции, агрегатные функции и типы.

Примечание.

Возможность выполнения кода СРЕДЫ CLR по умолчанию имеет значение OFF в SQL Server. Среда CLR может быть включена с помощью sp_configure системной хранимой процедуры.

Начиная с SQL Server 2005 (9.x), можно использовать определяемые пользователем типы (определяемые пользователем типы) для расширения скалярной системы типа сервера, что позволяет хранить объекты СРЕДЫ CLR в базе данных SQL Server. Определяемые пользователем элементы могут содержать несколько элементов и могут иметь поведение, отличая их от традиционных типов данных псевдонима, которые состоят из одного типа системных данных SQL Server.

Система обращается к определяемым пользователем типам как к единым объектам, поэтому их использование для сложных типов данных может негативно отразиться на производительности. Для моделирования сложных данных лучше подходят обычные строки и таблицы. Определяемые пользователем элементы в SQL Server хорошо подходят для следующих типов:

  • Значения даты, времени, валюты и расширенные числовые типы

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

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

Процесс разработки определяемых пользователем пользователей в SQL Server состоит из следующих шагов:

  1. Код и сборка сборки, определяющей определяемый пользователем UDT. Определяемые пользователем типы определяются с помощью любого языка, поддерживаемого средой CLR платформы .NET Framework и создающего проверяемый код. Среди таких языков Visual C# и Visual Basic .NET. Доступ к данным предоставляется как к полям и свойствам класса или структуры платформы .NET Framework, а поведение определяется методами класса или структуры.

  2. Зарегистрируйте сборку . Определяемые пользователем объекты можно развертывать с помощью пользовательского интерфейса Visual Studio в проекте базы данных или с помощью инструкции Transact-SQL CREATE ASSEMBLY, которая копирует сборку, содержащую класс или структуру в базу данных.

  3. Создайте UDT в SQL Server. После загрузки сборки в базу данных узла используйте инструкцию Transact-SQL CREATE TYPE для создания определяемого пользователем типа и предоставления членам класса или структуры в качестве членов определяемого пользователем типа. Определяемые пользователем типы существуют только в контексте одной базы данных, а после регистрации они не имеют зависимостей от внешних файлов, из которых были созданы.

    Примечание.

    До SQL Server 2005 (9.x) определяемые пользователем элементы, созданные из платформа .NET Framework сборок, не поддерживаются. Однако вы по-прежнему можете использовать типы данных псевдонима SQL Server с помощью sp_addtype. Синтаксис CREATE TYPE можно использовать для создания пользовательских типов данных SQL Server и определяемых пользователем типов данных.

  4. Создание таблиц, переменных или параметров с помощью определяемого пользователем типа с sql Server 2005 (9.x), определяемый пользователем тип можно использовать в качестве определения столбца таблицы, в качестве переменной в пакете Transact-SQL или в качестве аргумента функции Transact-SQL или хранимой процедуры.

В этом разделе

Создание определяемого пользователем типа
Описывает способ создания определяемых пользователем типов.

Регистрация определяемых пользователем типов в SQL Server
Описывает, как регистрировать определяемые пользователем функции и управлять ими в SQL Server.

Работа с определяемыми пользователем типами в SQL Server
Описывает способ создания запросов при помощи определяемых пользователем типов.

Доступ к определяемым пользователем типам в ADO.NET
Описывает, как работать с определяемых пользователем пользователем пользователей с помощью поставщика данных платформа .NET Framework для SQL Server в ADO.NET.