Поделиться через


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

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

ПримечаниеПримечание

По умолчанию возможность выполнять код CLR в SQL Server отключена. CLR можно включить с использованием системной хранимой процедуры sp_configure.

Начиная с версии SQL Server 2005, определяемые пользователем типы можно использовать для расширения системы скалярных типов сервера, благодаря чему становится возможным хранение объектов среды CLR в базе данных SQL Server. Определяемые пользователем типы могут состоять из несколько элементов, а их поведение может отличаться от обычных типов данных, обозначенных псевдонимами, каждый из которых состоит из одного системного типа данных SQL Server.

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

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

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

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

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

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

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

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

    ПримечаниеПримечание

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

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

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