Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения: SQL Server Управляемый экземпляр SQL Azure
Создает определяемую пользователем агрегатную функцию, реализация которой определена в классе сборки платформы .NET Framework. Для привязки агрегатной функции к ее реализации ядром СУБД, содержащая реализацию сборка платформы .NET Framework должна быть сначала загружена в экземпляр SQL Server с помощью инструкции CREATE ASSEMBLY.
Соглашения о синтаксисе 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 }
Аргументы
schema_name
Имя схемы, которой принадлежит определяемая пользователем агрегатная функция.
aggregate_name
Имя создаваемой агрегатной функции.
@ param_name
Один или несколько параметров в определяемой пользователем статистической функции. Значение параметра должно быть задано пользователем при выполнении агрегатной функции. Определяет имя параметра, используя знак @ как первый символ. Имя параметра должно соответствовать правилам для идентификаторов. Параметры являются локальными для функции.
system_scalar_type
Любой из системных скалярных типов данных SQL Server хранит значение входного параметра или возвращаемого значения. Для определяемого пользователем статистического выражения в качестве параметра могут использоваться все скалярные типы данных, кроме text, ntext и image. Нельзя использовать нескалярные типы, такие как cursor и table.
udt_schema_name
Имя схемы, к которой относится пользовательский тип данных среды CLR. Если не указано иное, ядро СУБД ссылается на аргумент udt_type_name в следующем порядке:
собственное пространство имен типов SQL;
в установленной по умолчанию для текущего пользователя схеме в текущей базе данных;
Схема dbo в текущей базе данных.
udt_type_name
Название пользовательского типа среды CLR, созданного в текущей базе данных. Если аргумент udt_schema_name не указан, SQL Server предполагает, что тип принадлежит к схеме текущего пользователя.
assembly_name [ .class_name ]
Указывает сборку, с которой связывается определяемая пользователем агрегатная функция и, при необходимости, имя схемы, к которой принадлежит сборка, и имя класса в сборке, реализующего определяемую пользователем статистическую функцию. Сборка уже должна быть создана в базе данных с помощью инструкции CREATE ASSEMBLY. class_name должен быть допустимым идентификатором SQL Server и соответствовать имени класса, существующего в сборке. Аргумент class_name может быть именем, указанным в пространстве имен, если в языке программирования, использовавшемся для написания класса, применяются пространства имен, например C#. Если аргумент class_name не задан, SQL Server считает, что это соответствует аргументу aggregate_name.
Замечания
По умолчанию возможность выполнения кода СРЕДЫ CLR в SQL Server отключена. Можно создавать, изменять и удалять объекты базы данных, которые ссылаются на модули управляемого кода, но код в этих модулях не будет выполняться в экземпляре SQL Server, пока параметр clr enabled не будет задан с помощью sp_configure.
Класс сборки, указанной в аргументе assembly_name, и его методы должны соответствовать всем требованиям к реализации определяемых пользователем агрегатных функций в экземпляре SQL Server. Дополнительные сведения см. в статье Пользовательские агрегатные функции среды CLR.
Разрешения
Требует разрешения CREATE AGGREGATE и разрешения REFERENCES для сборки, указанной в предложении EXTERNAL NAME.
Примеры
В следующем примере предполагается, что образец приложения StringUtilities.csproj скомпилирован. Дополнительные сведения см. в разделе Пример функций программы работы со строками.
Пример создает статистическое выражение Concatenate. Перед созданием статистического выражения в локальной базе данных регистрируется сборка StringUtilities.dll.
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