Tworzenie agregacji zdefiniowanych przez użytkownika
Dotyczy: SQL Server 2016 (13.x) i nowsze wersje
Obiekt bazy danych można utworzyć wewnątrz programu SQL Server, który jest zaprogramowany w zestawie CLR. Obiekty bazy danych, które mogą używać zaawansowanego modelu programowania udostępnianego przez CLR, obejmują wyzwalacze, procedury składowane, funkcje, funkcje agregujące i typy.
Podobnie jak wbudowane funkcje agregujące dostępne w języku Transact-SQL, funkcje agregujące zdefiniowane przez użytkownika wykonują obliczenia na zestawie wartości i zwracają pojedynczą wartość.
Utworzenie funkcji agregującej zdefiniowanej przez użytkownika w programie SQL Server obejmuje następujące kroki:
Zdefiniuj funkcję agregacji zdefiniowaną przez użytkownika jako klasę w języku obsługiwanym przez program Microsoft .NET Framework. Aby uzyskać więcej informacji na temat programowania agregacji zdefiniowanych przez użytkownika w środowisku CLR, zobacz agregacje zdefiniowane przez użytkownika środowiska CLR. Skompiluj tę klasę, aby utworzyć zestaw CLR przy użyciu odpowiedniego kompilatora języka.
Zarejestruj zestaw w programie SQL Server przy użyciu instrukcji
CREATE ASSEMBLY
. Aby uzyskać więcej informacji na temat zestawów w programie SQL Server, zobacz Assemblies (Aparat bazy danych).Utwórz agregację zdefiniowaną przez użytkownika, która odwołuje się do zarejestrowanego zestawu przy użyciu instrukcji
CREATE AGGREGATE
.
Wykonywanie kodu CLR jest domyślnie wyłączone w programie SQL Server. Można tworzyć, zmieniać i usuwać obiekty bazy danych odwołujące się do zarządzanych modułów kodu, ale te odwołania nie są wykonywane w programie SQL Server, chyba że opcja konfiguracji serwera clr jest włączona przy użyciu sp_configure.
Wdrożenie projektu programu SQL Server w programie Microsoft Visual Studio rejestruje zestaw w bazie danych określonej dla projektu. Wdrożenie projektu powoduje również utworzenie funkcji CLR w bazie danych dla wszystkich metod oznaczonych atrybutem SqlFunction
. Aby uzyskać więcej informacji, zapoznaj się z wdrażanie obiektów baz danych CLR.