Udostępnij za pośrednictwem


Tworzenie agregacji języka Transact-SQL)

Tworzy użytkownika wartość zagregowana funkcja , którego realizacja jest zdefiniowana w klasie wirtualny plik dziennika w .NET Framework.Dla Aparat baz danych powiązaćfunkcja wartość zagregowanado jej wykonania, .NET Frameworkwirtualny plik dziennika zawierającego wykonania musi najpierw można przekazać do wystąpienie SQL Server przy użyciu Tworzenie zestawu instrukcja.

Ostrzeżenie

Domyślnie, zdolność SQL Server do uruchomienia środowiska CLR kodu jest wyłączony.Tworzenie, modyfikowanie i usuwanie obiektów 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ąpienie SQL Server chyba że clr włączona opcja jest włączone za pomocą sp_configure.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

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órej należy dany zdefiniowane przez użytkownika wartość zagregowana funkcja .

  • aggregate_name
    Jest nazwą wartość zagregowana funkcja , który chcesz utworzyć.

  • @param_name
    Jeden lub więcej parametrów w zdefiniowanej przez użytkownika wartość zagregowana.Wartość parametru musi być podane przez użytkownika podczas wykonywaniafunkcja wartość zagregowana. Określ nazwę parametru za pomocą "at" znak (
    @
    ) jako pierwszego znaku.Nazwa parametru musi być zgodne z zasadami identyfikatorów.Parametry są lokalne funkcja.

  • system_scalar_type
    Jest jednym z SQL Server wartość skalarna typów danych do przechowywania wartości parametru wejściowego lub zwracanej wartości.Wszystkie typy danych wartość skalarna może służyć jako parametr do zdefiniowanej przez użytkownika wartość zagregowana, z wyjątkiem text, ntext, i image.Typy nonscalar, takich jak cursor i table, nie można określić.

  • udt_schema_name
    Jest to nazwa schematu, do której należy zdefiniowany przez użytkownika typ CLR .Jeśli nie określono Aparat baz danych odniesienia 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.

    • Dbo schematu w bieżącej bazie danych.

  • udt_type_name
    Jest nazwą zdefiniowany przez użytkownika typ CLR już utworzonych w bieżącej bazie danych.Jeśli udt_schema_name nie jest określony, SQL Server zakłada się, że typ należy do schematu bieżącego użytkownika.

  • assembly_name [ **.**class_name ]
    Określa wirtualny plik dziennika powiązać ze zdefiniowanej przez użytkownika wartość zagregowana funkcja i, opcjonalnie, nazwę schematu do której należy dany wirtualny plik dziennika i nazwę klasy w wirtualny plik dziennika implementuje zdefiniowane przez użytkownika wartość zagregowana.wirtualny plik dziennika musi już zostały utworzone w bazie danych przy użyciu Tworzenie zestawu instrukcja.class_namemusi być prawidłową SQL Server identyfikatora i match nazwę klasy, która istnieje w wirtualny plik dziennika.class_nameJeśli język programowania służący do zapisu klasy używa obszarów nazw, takich jak C# mogą być nazwy kwalifikowanej w obszarze nazw.Jeśli class_name nie jest określony, SQL Server zakłada się, że jest taka sama jak aggregate_name.

Uwagi

Klasa wirtualny plik dziennika , do którego odwołuje się assembly_name i jego metod powinna spełniać wszystkie wymagania dotyczące wykonania przez użytkownika wartość zagregowana funkcja w wystąpienie SQL Server.Aby uzyskać więcej informacji, zobacz CLR agregatów zdefiniowane przez użytkownika.

Uprawnienia

Wymaga uprawnienie Tworzenie agregacji, a także uprawnienie odwołania do wirtualny plik dziennika określone w klauzulanazw zewnętrznych.

Przykłady

W poniższym przykładzie założono, że próbek aparatu bazy danych programuSQL Server zainstalowany w lokalizacji domyślnej komputera lokalnego i StringUtilities.csproj skompilowaniu aplikacji przykładowej.Aby uzyskać więcej informacji, zobacz Zagadnienia dotyczące instalowania przykładów i przykładowych baz danych programu SQL Server.

W przykładzie tworzone wartość zagregowana Concatenate.Przed wartość zagregowana tworzenia wirtualny plik dziennika StringUtilities.dll jest zarejestrowany w lokalnej bazie danych.

USE AdventureWorks2008R2;
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_50.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

Zobacz także

Odwołanie