Erstellen benutzerdefinierter Aggregate
Gilt für: SQL Server 2016 (13.x) und höhere Versionen
Sie können ein Datenbankobjekt in SQL Server erstellen, das in einer CLR-Assembly programmiert wird. Datenbankobjekte, die das reichhaltige Programmiermodell nutzen können, das von der CLR bereitgestellt wird, sind z. B. Trigger, gespeicherte Prozeduren, Funktionen, Aggregatfunktionen und Typen.
Wie die eingebauten Aggregatfunktionen in Transact-SQL führen auch benutzerdefinierte Aggregatfunktionen eine Berechnung mit einer Reihe von Werten durch und geben einen einzigen Wert zurück.
Das Erstellen einer benutzerdefinierten Aggregatfunktion in SQL Server umfasst die folgenden Schritte:
Definieren der benutzerdefinierten Aggregatfunktion als Klasse in einer von Microsoft .NET Framework unterstützten Sprache. Weitere Informationen zum Programmieren benutzerdefinierter Aggregate in der CLR finden Sie unter Benutzerdefinierte CLR-Aggregate. Kompilieren dieser Klasse mithilfe des entsprechenden Sprachcompilers, um eine Assembly zu erstellen.
Registrieren der Assembly in SQL Server mithilfe der CREATE ASSEMBLY-Anweisung. Weitere Informationen zum Arbeiten mit Assemblys in SQL Server finden Sie unter Assemblies (Datenbank-Engine).
Erstellen des benutzerdefinierten Aggregats, das auf die registrierte Assembly verweist, mithilfe der CREATE AGGREGATE-Anweisung.
Das Ausführen von CLR-Code ist in SQL Server standardmäßig deaktiviert. Sie können Datenbankobjekte erstellen, ändern und löschen, die auf verwaltete Codemodule verweisen, aber diese Verweise werden in SQL Server nur dann ausgeführt, wenn die Option clr enabled mit sp_configure (Transact-SQL) aktiviert wurde.
Bei der Bereitstellung eines SQL Server-Projekts in Microsoft Visual Studio wird eine Assembly in der Datenbank registriert, die für das Projekt angegeben wurde. Bei der Bereitstellung des Projekts werden auch CLR-Funktionen in der Datenbank für alle Methoden erstellt, die mit dem SqlFunction -Attribut versehen sind. Weitere Informationen finden Sie unter Deploying CLR Database Objects.