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


Создание агрегатов, определяемых пользователем

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

Как и встроенные агрегатные функции, предоставляемые в Transact-SQL, определяемые пользователем агрегатные функции выполняют вычисление набора значений и возвращают одно значение.

Создание определяемой пользователем агрегатной функции в SQL Server включает следующие действия.

  • Определите определяемую пользователем агрегатную функцию в качестве класса на языке, поддерживаемом корпорацией Майкрософт платформа .NET Framework. Дополнительные сведения о программе определяемых пользователем агрегатов в среде CLR см. в разделе CLR User-Defined Агрегаты. Скомпилируйте этот класс для построения сборки среды CLR, используя соответствующий языку компилятор.

  • Зарегистрируйте сборку в SQL Server с помощью инструкции CREATE ASSEMBLY. Дополнительные сведения о сборках в SQL Server см. в разделе "Сборки" (ядро СУБД).

  • Создайте определяемую пользователем агрегатную функцию, которая ссылается на зарегистрированную сборку, с помощью инструкции CREATE AGGREGATE.

Замечание

Развертывание проекта SQL Server в MicrosoftVisual Studio регистрирует сборку в базе данных, указанной для проекта. При развертывании проекта также создается определяемый пользователем агрегат в базе данных для всех определений классов, аннотированных атрибутом SqlUserDefinedAggregate . Дополнительные сведения см. в разделе "Развертывание объектов базы данных CLR".

Замечание

Возможность SQL Server выполнять код CLR по умолчанию отключена. Можно создавать, изменять и удалять объекты базы данных, ссылающиеся на модули управляемого кода, но эти ссылки не будут выполняться в SQL Server, если параметр clr не включен с помощью sp_configure (Transact-SQL).

Создание, изменение или удаление сборки

Чтобы создать определяемый пользователем агрегат

См. также

Концепции программирования интеграции с Common Language Runtime (CLR)