Определяемые пользователем типы данных 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 состоит из следующих шагов.
Кодирование и построение сборки, определяющей определяемый пользователем тип. Определяемые пользователем типы определяются с помощью любого языка, поддерживаемого средой CLR .NET Framework и создающего проверяемый код. Среди таких языков Visual C# и Visual Basic .NET. Доступ к данным предоставляется как к полям и свойствам класса или структуры платформы .NET Framework, а поведение определяется методами класса или структуры.
Регистрация сборки. Определяемые пользователем типы можно развертывать в проекте базы данных с помощью пользовательского интерфейса Visual Studio или с помощью инструкции Transact-SQL CREATE ASSEMBLY, которая копирует сборку, содержащую класс или структуру, в базу данных.
Создание определяемого пользователем типа в SQL Server. После загрузки сборки в базу данных определяемый пользователем тип создается при помощи инструкции Transact-SQL, а доступ к элементам класса или структуры представляется как к элементам этого типа. Определяемые пользователем типы существуют только в контексте одной базы данных, а после регистрации они не имеют зависимостей от внешних файлов, из которых были созданы.
Примечание До выхода версии SQL Server 2005 определяемые пользователем типы, созданные на основе сборок платформы .NET Framework, не поддерживались. Тем не менее, псевдонимы типов данных SQL Server все еще можно использовать в SQL Server 2005 и более поздних версиях при использовании хранимой процедуры sp_addtype. Синтаксис CREATE TYPE можно использовать для создания собственных определяемых пользователем типов данных SQL Server и определяемых пользователем типов.
**Создание таблиц, переменных или параметров при помощи определяемого пользователем типа. **Начиная с версии SQL Server 2005, определяемый пользователем тип можно использовать в качестве определения столбца таблицы, переменной в пакете Transact-SQL или аргумента функции или хранимой процедуры Transact-SQL. Дополнительные сведения см. в разделе Работа с определяемыми пользователем типами данных CLR.
В этом разделе
Создание определяемого пользователем типа
Описывает способ создания определяемых пользователем типов.Регистрация определяемых пользователем типов в SQL Server
Описывает способ регистрации и управления определяемыми пользователем типами в SQL Server.Работа с определяемыми пользователем типами в SQL Server
Описывает способ создания запросов при помощи определяемых пользователем типов.Доступ к определяемым пользователем типам в ADO.NET
Описывает способ работы с определяемыми пользователем типами при помощи поставщика данных .NET Framework для SQL Server в ADO.NET.