Udostępnij za pośrednictwem


Wymagania dotyczące CLR agregatów zdefiniowane przez użytkownika

Wpisz Wspólne Zgromadzenie runtime (CLR) języka mogą być rejestrowane jako funkcja agregująca zdefiniowana przez użytkownika, jak implementuje kontrakt wymagane wartość zagregowana.kontrakt ta składa się z SqlUserDefinedAggregate atrybut i metody agregacja kontrakt.kontrakt agregacja zawiera mechanizm Zapisywanie stanu pośredniego agregacja i mechanizmu gromadzą się nowe wartości, które składa się z czterech metod: Init, Accumulate, Merge, and Terminate.When you have met these requirements, you will be able to take full advantage of user-defined aggregates in Microsoft SQL Server.W poniższych sekcjach tego tematu przedstawiono dodatkowe szczegółowe informacje dotyczące sposobu tworzenia i pracy z agregatów zdefiniowane przez użytkownika.Na przykład, zobacz Wywoływanie CLR zdefiniowanej przez użytkownika funkcji agregujących.

SqlUserDefinedAggregate

Aby uzyskać więcej informacji, zobacz SqlUserDefinedAggregateAttribute.

Metody agregacji

Klasa zarejestrowane jako agregatu użytkownika powinien obsługiwać następujące wystąpienie metody.Są to metody, które procesor kwerend używa do wyliczenia agregacja:

Metoda

Składnia

Opis

Init

public void Init();

Procesor kwerend używa tej metoda do zainicjowania obliczeń agregacja.Tej metoda jest wywoływana raz dla każdej grupy, który agregowania procesor kwerend.Procesor kwerend może wybrać ponownie użyć tego samego wystąpienie klasy wartość zagregowana dla obliczania agregatów wielu grup.Init Metoda powinny wykonywać żadnych oczyszczania w razie potrzeby z poprzednich zastosowań tego wystąpienie i włączyć go ponownie uruchomić nowy wartość zagregowana obliczeń.

Accumulate

public void Accumulate ( input-type value[, input-type value, ...]);

One or more parameters representing the parameters of the function.input_type should be the managed SQL Server data type equivalent to the native SQL Server data type specified by input_sqltype in the CREATE AGGREGATE statement.Aby uzyskać więcej informacji, zobacz Mapowanie danych parametru CLR.

Zdefiniowany przez użytkownika typów (UDTs) input-type jest taki sam, jak typ UDT.Procesor kwerend używa tej metoda do kumulowania wartooci wartość zagregowana.Jest to wywoływana raz dla każdej wartości w grupie, która jest sumowanej.Procesor kwerend zawsze wywołuje to tylko po wywołaniu Init Metoda danego wystąpienie klasy wartość zagregowanaImplementacja tej metoda należy zaktualizować stan wystąpienie odzwierciedlają akumulacji wartość argumentu przekazywany.

Merge

public void Merge( udagg_class value);

Tej metoda można scalić inne wystąpienie tej klasy wartość zagregowana bieżące wystąpienie.Procesor kwerend używa tej metoda do scalenia częściowe obliczeniach wiele agregacja.

Terminate

public return_type Terminate();

Ta metoda wykonuje obliczenie łącznej i zwraca wynik agregacja.Zwracany_typ powinien być zarządzany SQL Server Typ danych jest zarządzany odpowiednik return_sqltype określonych w CREATE AGGREGATE instrukcja.Zwracany_typ może być również typ zdefiniowany przez użytkownika.

Parametry oródwierszową

Oródwierszową parametry (TVPs), typy zdefiniowane przez użytkownika tabela, które są przekazywane do procedury lub funkcja, zapewniają skuteczny sposób przekazywania wielu wierszy danych do serwera.TVPs oferują podobne funkcje tablic parametrów, ale oferują większą elastyczność i ściślejszej integracja z Transact-SQL.Zapewniają także potencjału dla zwiększenia wydajności.TVPs także zmniejszyć liczbę przesłania do serwera.Zamiast wysyłać wiele żądań do serwera, takie jak lista parametrów wartość skalarna danych mogą być wysyłane do serwera jako TVP.Typ zdefiniowany przez użytkownika tabela nie przekazane jako parametr oródwierszową do zwracane z zarządzanych procedura składowana lub funkcja wykonywania w SQL Server procesu.Ponadto TVPs nie można używać wewnątrz zakres połączenia kontekstu.Jednakże TVP mogą być używane z SqlClient w zarządzanych procedury przechowywanej lub funkcji wykonywania w SQL Server procesu, jeśli jest używany w połączeniu, to nie połączenia kontekstu.Połączenie może być na tym samym serwerze, wykonywany zarządzanych procedura lub funkcja.Aby uzyskać więcej informacji o TVPs, zobacz Parametry oródwierszową (aparat bazy danych).