Udostępnij za pośrednictwem


CREATE AGGREGATE (Transact-SQL)

Tworzy funkcja agregacja zdefiniowana przez użytkownika których wykonanie jest zdefiniowana w klasie wirtualny plik dziennika w .NET Framework. Dla Database Engine Aby powiązać funkcja agregująca do jej wykonania .NET Framework wirtualny plik dziennika zawierający wykonania musi najpierw go przekazać do wystąpienie SQL Server za pomocą instrukcja CREATE wirtualny plik dziennika.

Uwaga

Domyślnie, zdolność SQL Server uruchomienie kodu CLR jest wyłączone. Można tworzyć, modyfikować i upuszczać obiekty bazy danych, które odwołują się do modułów kod zarządzany, ale kod w tych modułach nie będzie działać w wystąpieniu SQL Server chyba że Opcja CLR włączone za pomocą jest włączonasp_configure.

Topic link iconKonwencje składni języka Transact-SQL

CREATE AGGREGATE [ schema_name . ] aggregate_name
        (@param_name <input_sqltype> 
        [ ,...n ] )
RETURNS <return_sqltype>
EXTERNAL NAME assembly_name [ .class_name ]

<input_sqltype> ::=
        system_scalar_type | { [ udt_schema_name. ] udt_type_name }

<return_sqltype> ::=
        system_scalar_type | { [ udt_schema_name. ] udt_type_name }

Argumenty

  • schema_name
    Jest to nazwa schematu, do którego funkcja agregacja zdefiniowana przez użytkownika należy.

  • aggregate_name
    Jest to nazwa funkcja agregująca chcesz utworzyć.

  • @param_name
    Jeden lub więcej parametrów w przez użytkownika agregacja.Wartość parametru muszą być dostarczone przez użytkownika podczas funkcja agregująca jest wykonywane.Określ nazwę parametru za pomocą "at" znaku)
    @
    ) jako pierwszy znak.Nazwa parametru musi być zgodne z zasadami identyfikatory.Parametry są lokalne do funkcja.

  • system_scalar_type
    Jest jednym z SQL Server typy danych wartość skalarna systemu do przechowywania wartości parametru wejściowego ani zwracanej wartości. Wszystkie typy danych wartość skalarna mogą być używane jako parametr agregatu zdefiniowanej przez użytkownika, z wyjątkiem text, ntext, a image. Typy nonscalar, takich jak cursor i table, nie może być określona.

  • udt_schema_name
    Jest to nazwa schematu, do którego środowiska CLR typ zdefiniowany przez użytkownika należy.Jeśli nie zostanie określony, Database Engine odwołania udt_type_name w następującej kolejności:

    • Nazw typu macierzystego SQL.

    • Domyślny schemat bieżącego użytkownika w bieżącej bazie danych.

    • The dbo schema in the current database.

  • udt_type_name
    Jest nazwą typu CLR użytkownika utworzone w bieżącej bazie danych.Jeśli udt_schema_name nie określono, SQL Server zakłada się, typ należy do schematu z bieżącego użytkownika.

  • assembly_name [ **.**class_name ]
    Określa wirtualny plik dziennika powiązać ze zdefiniowanej przez użytkownika funkcja agregacja i, opcjonalnie, nazwę schematu, do której należy dany wirtualny plik dziennika oraz nazwę klasy w zestawie implementujące agregatu zdefiniowanej przez użytkownika.The assembly must already have been created in the database by using a CREATE ASSEMBLY statement.class_name must be a valid SQL Server identifier and match the name of a class that exists in the assembly.class_name may be a namespace-qualified name if the programming language used to write the class uses namespaces, such as C#.Jeśli class_name nie określono, SQL Server zakłada się, jest taki sam, jak aggregate_name.

Remarks

Klasa wirtualny plik dziennika, do którego odwołuje się assembly_name i jego metod powinny spełniać wszystkie wymagania dotyczące wykonania przez użytkownika funkcja agregacja w wystąpieniu SQL Server. Aby uzyskać więcej informacji zobacz Środowisko CLR zagregowanych zdefiniowane przez użytkownika.

Uprawnienia

Wymaga uprawnienia CREATE agregacja, a także materiały referencyjne uprawnienia dla wirtualny plik dziennika, określone w klauzula EXTERNAL nazwę pola.

Przykłady

W poniższym przykładzie założono, że Przykłady aparat bazy danych programu SQL Server są instalowane w domyślnej lokalizacji na komputerze lokalnym, a aplikacja przykładowa StringUtilities.csproj jest skompilowany.Aby uzyskać więcej informacji zobacz String Utilities Sample.

W przykładzie zostanie utworzony agregacja Concatenate. Przed utworzeniem agregacja, wirtualny plik dziennika StringUtilities.dll jest zarejestrowany w lokalnej bazie danych.

USE AdventureWorks;
GO
DECLARE @SamplesPath nvarchar(1024)
-- You may have to modify the value of the this variable if you have
--installed the sample some location other than the default location.
SELECT @SamplesPath = REPLACE(physical_name, 'Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\master.mdf', 'Microsoft SQL Server\90\Samples\Engine\Programmability\CLR\') 
     FROM master.sys.database_files 
     WHERE name = 'master';
CREATE ASSEMBLY StringUtilities FROM @SamplesPath + 'StringUtilities\CS\StringUtilities\bin\debug\StringUtilities.dll'
WITH PERMISSION_SET=SAFE;
GO

CREATE AGGREGATE Concatenate(@input nvarchar(4000))
RETURNS nvarchar(4000)
EXTERNAL NAME [StringUtilities].[Microsoft.Samples.SqlServer.Concatenate];
GO

See Also

Reference