Creazione di funzioni di aggregazione definite dall'utenteCreate User-defined Aggregates

È possibile creare un oggetto di database all'interno di SQL ServerSQL Server programmato in un assembly CLR.You can create a database object inside SQL ServerSQL Server that is programmed in a CLR assembly. Gli oggetti di database che possono sfruttare il complesso modello di programmazione fornito da CLR includono trigger, stored procedure, funzioni, funzioni di aggregazione e tipi.Database objects that can leverage the rich programming model provided by the CLR include triggers, stored procedures, functions, aggregate functions, and types.

Analogamente alle funzioni di aggregazione predefinite incluse in Transact-SQLTransact-SQL, le funzioni di aggregazione definite dall'utente eseguono un calcolo su un set di valori e restituiscono un unico valore.Like the built-in aggregate functions provided in Transact-SQLTransact-SQL, user-defined aggregate functions perform a calculation on a set of values and return a single value.

Per creare una funzione di aggregazione definita dall'utente in SQL ServerSQL Server , eseguire le operazioni descritte di seguito:Creating a user-defined aggregate function in SQL ServerSQL Server involves the following steps:

  • Impostare la funzione di aggregazione definita dall'utente come una classe utilizzando un linguaggio supportato in MicrosoftMicrosoft .NET Framework.Define the user-defined aggregate function as a class in a MicrosoftMicrosoft .NET Framework-supported language. Per altre informazioni sulla programmazione di funzioni di aggregazione definite dall'utente in CLR, vedere Aggregazioni CLR definite dall'utente.For more information about how to program user-defined aggregates in the CLR, see CLR User-Defined Aggregates. Compilare questa classe per compilare un assembly CLR utilizzando il compilatore di linguaggio appropriato.Compile this class to build a CLR assembly using the appropriate language compiler.

  • Per registrare l'assembly in SQL ServerSQL Server, utilizzare l'istruzione CREATE ASSEMBLY.Register the assembly in SQL ServerSQL Server using the CREATE ASSEMBLY statement. Per altre informazioni sugli assembly in SQL ServerSQL Server, vedere Assembly (Motore di database).For more information about assemblies in SQL ServerSQL Server, see Assemblies (Database Engine).

  • Per creare la funzione di aggregazione definita dall'utente che fa riferimento all'assembly registrato, utilizzare l'istruzione CREATE AGGREGATE.Create the user-defined aggregate that references the registered assembly using the CREATE AGGREGATE statement.

Nota

Con la distribuzione di un progetto SQL Server in MicrosoftMicrosoft Visual StudioVisual Studio viene registrato un assembly nel database specificato per il progetto.Deploying a SQL Server Project in MicrosoftMicrosoft Visual StudioVisual Studio registers an assembly in the database that was specified for the project. La distribuzione del progetto consente anche di creare una funzione di aggregazione definita dall'utente nel database per tutte le definizioni di classe annotate con l'attributo SqlUserDefinedAggregate .Deploying the project also creates a user-defined aggregate in the database for all class definitions annotated with the SqlUserDefinedAggregate attribute. Per altre informazioni, vedere Distribuzione di oggetti di database CLR.For more information, see Deploying CLR Database Objects.

Nota

Per impostazione predefinita, l'esecuzione di codice CLR in SQL ServerSQL Server è disattivata.The ability of SQL ServerSQL Server to execute CLR code is off by default. È possibile creare, modificare ed eliminare oggetti di database che fanno riferimento a moduli di codice gestito. Tali riferimenti non verranno tuttavia eseguiti in SQL ServerSQL Server , a meno che non si attivi l' opzione clr enabled tramite sp_configure (Transact-SQL).You can create, alter and drop database objects that reference managed code modules, but these references will not execute in SQL ServerSQL Server unless the clr enabled Option is enabled using sp_configure (Transact-SQL).

Per creare, modificare o eliminare un assemblyTo create, modify, or drop an assembly

Vedere ancheSee Also

Concetti relativi alla programmazione dell'integrazione con CLR (Common Language Runtime)Common Language Runtime (CLR) Integration Programming Concepts