Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Managed Instance
Létrehoz egy felhasználó által definiált aggregált függvényt, amelynek megvalósítása egy .NET keretrendszer egy osztályában van definiálva. Ahhoz, hogy a Database Engine az aggregált függvényt a megvalósításához köthesse hozzá, először a .NET Framework összeállítót, amely tartalmazza a megvalósítást, fel kell tölteni egy SQL Server példányába egy CREATE ASSEMBLY utasítással.
Transact-SQL szintaxis konvenciók
Syntax
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 }
Arguments
schema_name
Ez annak a sémának a neve, amelyhez a felhasználó által definiált aggregált függvény tartozik.
aggregate_name
Ez az aggregált függvény neve, amit létre akarsz hozni.
@
param_name
Egy vagy több paraméter a felhasználó által definiált aggregátumban. A paraméter értékét a felhasználónak kell megadnia, amikor az aggregált függvényt végrehajtják. Határozz meg egy paraméternevet úgy, hogy az első karakterként egy "at" jelet (@) használunk. A paraméter nevének meg kell felelnie az azonosítókra vonatkozó szabályoknak. A paraméterek lokálisak a függvényhez képest.
system_scalar_type
Van-e bármelyik SQL Server rendszer skaláris adattípusa, amely tartalmazza a bemeneti vagy visszaküldési értéket? Minden skaláris adattípus használható paraméterként egy felhasználó által definiált aggregátumhoz, kivéve a szöveget, az ntextet és a képet. Nem-skaláris típusok, mint például kurzor és tábla, nem meghatározhatók.
udt_schema_name
Az a séma neve, amelyhez a CLR felhasználó-definiált típus tartozik. Ha nincs megadva, a Database Engine hivatkozások a következő sorrendben udt_type_name:
A natív SQL típus névtér.
Az aktuális felhasználó alapértelmezett sémája az aktuális adatbázisban.
A dbo séma az aktuális adatbázisban.
udt_type_name
Ez egy CLR felhasználó által definiált típus neve, amelyet már létrehoztak a jelenlegi adatbázisban. Ha udt_schema_name nincs megadva, SQL Server feltételezi, hogy a típus a jelenlegi felhasználó sémájához tartozik.
assembly_name [ .class_name ]
Megadja az assembly függvényt, amely a felhasználó által definiált aggregált függvényhez kötött összesség, és opcionálisan annak a sémának nevét, amelyhez az assembly tartozik, valamint az osztály nevét az assemble-ben, amely a felhasználó által definiált aggregált implementálja. Az összeállítást már létre kell hozni az adatbázisban egy CREATE ASSEMBLY utasítással.
class_name érvényes SQL Server azonosítónak kell lennie, és egyeznie kell egy olyan osztály nevével, amely az összeállításban létezik.
class_name névtér-minősítő név lehet, ha az osztály írásához használt programozási nyelv névtereket használ, például C#-ot. Ha class_name nincs megadva, SQL Server feltételezi, hogy ugyanaz, mint a aggregate_name.
Remarks
Alapértelmezés szerint az SQL Server clr-kód futtatásának képessége ki van kapcsolva. Létrehozhatsz, módosíthatsz és eltávolíthatsz adatbázis-objektumokat, amelyek kezelt kódmodulokra hivatkoznak, de ezekben a modulokban lévő kód nem fut SQL Server példányban, hacsak a clr engedélyezett opció nem engedélyezett a sp_configure használatával.
A assembly_name-ban hivatkozott assembly osztályának és annak módszereinek teljesítenie kell minden követelményt egy felhasználó által definiált aggregált függvény megvalósításához SQL Server példányban. További információért lásd: CLR User-Defined Aggregátumok.
Permissions
Engedélyt CREATE AGGREGATE és HIVATKOZÁSI engedélyt igényel a KÜLSŐ NÉV záradékban meghatározott assembly esetén.
Examples
A következő példa feltételezi, hogy egy StringUtilities.csproj mintaalkalmazást fordítanak le. További információért lásd: String Utility Functions Sample (String Utility Functions Sample).
A példa aggregált Concatenate-t hoz létre. Az aggregált létrehozása előtt az összeállítást StringUtilities.dll regisztrálják a helyi adatbázisban.
USE AdventureWorks2022;
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\MSSQL13.MSSQLSERVER\MSSQL\DATA\master.mdf', 'Microsoft SQL Server\130\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