Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения: SQL Server 2019 (15.x) и более поздних версий
Функция расширения языка SQL Server использует системную хранимую процедуру sp_execute_external_script в качестве интерфейса для вызова среды выполнения .NET.
В этой статье описываются сведения о реализации кода C#, выполняемого в SQL Server.
Место размещения классов C#
Код C# в SQL Server вызывается путем отправки скомпилированных библиотек .NET (DLL) и других зависимостей в базу данных с помощью DDL внешней библиотеки . Дополнительные сведения см. в разделе "Создание библиотеки DLL .NET" из проекта C#.
Основные принципы
Ниже приведены некоторые основные принципы при выполнении C# на SQL Server.
Скомпилированные пользовательские классы .NET должны существовать в DLL-файлах.
Вызываемая процедура C# должна быть указана в
scriptпараметре хранимой процедуры.Если класс принадлежит пакету,
packageNameнеобходимо указать его.paramsиспользуется для передачи параметров в класс C#. Вызов метода, требующего аргументов, не поддерживается. Поэтому параметры являются единственным способом передачи значений аргументов в метод.
Примечание.
Эта заметка использует поддерживаемые и неподдерживаемые операции, относящиеся к C# в SQL Server 2019 (15.x) и более поздних версиях. В хранимой процедуре поддерживаются входные параметры, а выходные параметры не поддерживаются.
Вызов кода C#
Sp_execute_external_script системная хранимая процедура — это интерфейс, используемый для вызова среды выполнения .NET. В следующем примере показано sp_execute_external_script использование расширения .NET и параметров для указания пути, скрипта и пользовательского кода.
Примечание.
Вам не нужно определять метод для вызова. По умолчанию вызывается Execute метод. Это означает, что необходимо следовать пакету SDK расширяемости Майкрософт для C# для SQL Server и реализовать Execute метод в классе C#.
DECLARE @param1 AS INT;
SET @param1 = 3;
EXECUTE sp_execute_external_script
@language = N'dotnet',
@script = N'<PackageName>.<ClassName>',
@input_data_1 = N'<Input Query>',
@param1 = @param1;
Использование внешней библиотеки
В SQL Server 2019 (15.x) и более поздних версиях можно использовать внешние библиотеки для языка C# в Windows. Классы можно скомпилировать в DLL-файл и передать библиотеку DLL и другие зависимости в базу данных с помощью DDL-файла CREATE EXTERNAL LIBRARY .
Пример отправки DLL-файла с внешней библиотекой:
CREATE EXTERNAL LIBRARY [dotnetlibrary]
FROM (CONTENT = '<local path to .dll file>')
WITH (LANGUAGE = 'dotnet');
GO
При создании внешней библиотеки SQL Server автоматически имеет доступ к классам C#, и вам не нужно устанавливать специальные разрешения на путь.
Следующий код является примером вызова Execute метода в классе MyClass из пакета MyPackage, отправленного в виде внешней библиотеки:
EXECUTE sp_execute_external_script
@language = N'dotnet',
@script = N'MyPackage.MyClass',
@input_data_1 = N'SELECT * FROM MYTABLE'
WITH RESULT SETS ((column1 INT));
Дополнительные сведения см. в разделе CREATE EXTERNAL LANGUAGE.