title | description | author | ms.author | ms.date | ms.service | ms.topic | helpviewer_keywords | ||
---|---|---|---|---|---|---|---|---|---|
Create User-Defined Aggregates |
Learn how to create a user-defined aggregate object inside SQL Server that is programmed in a CLR assembly. |
rwestMSFT |
randolphwest |
12/27/2024 |
sql |
conceptual |
|
[!INCLUDE sqlserver2016]
You can create a database object inside [!INCLUDE ssNoVersion] that is programmed in a CLR assembly. Database objects that can use the rich programming model provided by the CLR include triggers, stored procedures, functions, aggregate functions, and types.
Like the built-in aggregate functions provided in [!INCLUDE tsql], user-defined aggregate functions perform a calculation on a set of values and return a single value.
Creating a user-defined aggregate function in [!INCLUDE ssNoVersion] involves the following steps:
-
Define the user-defined aggregate function as a class in a [!INCLUDE msCoName] .NET Framework-supported language. For more information about how to program user-defined aggregates in the CLR, see CLR user-defined aggregates. Compile this class to build a CLR assembly using the appropriate language compiler.
-
Register the assembly in [!INCLUDE ssNoVersion] using the
CREATE ASSEMBLY
statement. For more information about assemblies in [!INCLUDE ssNoVersion], see Assemblies (Database Engine). -
Create the user-defined aggregate that references the registered assembly using the
CREATE AGGREGATE
statement.
Executing CLR code is off by default in [!INCLUDE ssNoVersion]. You can create, alter, and drop database objects that reference managed code modules, but these references don't execute in [!INCLUDE ssNoVersion], unless the clr enabled server configuration option is enabled by using sp_configure.
Deploying a SQL Server Project in [!INCLUDE msCoName] [!INCLUDE vsprvs] registers an assembly in the database that was specified for the project. Deploying the project also creates CLR functions in the database for all methods annotated with the SqlFunction
attribute. For more information, see Deploy CLR database objects.