Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: SQL Server 2019 (15.x) и более поздних версий
Функция расширения языка SQL Server использует системную хранимую процедуру sp_execute_external_script в качестве интерфейса для вызова среды выполнения Java.
В этой статье описываются детали реализации классов и методов Java, которые выполняются в SQL Server.
Место размещения классов Java
Существует два метода вызова классов Java в SQL Server:
Поместите файлы
.classили.jarв classpath Java.Загрузите скомпилированные классы из файла
.jar, а также другие зависимости в базу данных с помощью DDL для внешней библиотеки.
Примечание.
В качестве общей рекомендации используйте .jar файлы, а не отдельные .class файлы. Это распространенная методика при работе с языком Java, которая в целом упрощает работу. См. также, как создать файл java .jar из файлов классов.
Используйте classpath
Основные принципы
Ниже приведены некоторые основные принципы при выполнении Java на SQL Server.
Скомпилированные пользовательские классы Java должны находиться в файлах
.classили.jarв вашем classpath Java. Параметр CLASSPATH определяет путь к скомпилированным файлам Java.Вызывающий метод Java должен быть указан в параметре
scriptхранимой процедуры.Если класс принадлежит пакету, необходимо указать
packageName.paramsиспользуется для передачи параметров в класс Java. Вызов метода, требующего аргументов, не поддерживается. Поэтому параметры являются единственным способом передачи значений аргументов в метод.
Примечание.
В этом примечании повторно перечислены поддерживаемые и неподдерживаемые операции для Java в SQL Server 2019 (15.x) и более поздних версиях. В хранимой процедуре поддерживаются входные параметры, а выходные параметры не поддерживаются.
Вызов класса Java
Системная хранимая процедура sp_execute_external_script является интерфейсом для вызова среды выполнения Java. В следующем примере показан вызов sp_execute_external_script с использованием расширения Java и параметров для указания пути, сценария и пользовательского кода.
Примечание.
Вам не нужно определять метод для вызова. По умолчанию вызывается метод execute. Это означает, что вам нужно следовать требованиям Microsoft Extensibility SDK for Java for SQL Server и реализовать метод execute в вашем Java-классе.
DECLARE @param1 AS INT;
SET @param1 = 3;
EXECUTE sp_execute_external_script
@language = N'Java',
@script = N'<packageName>.<ClassName>',
@input_data_1 = N'<Input Query>',
@param1 = @param1;
Задать CLASSPATH
После того как вы скомпилируете один или несколько классов Java и создадите файл .jar в вашем Java classpath, у вас будет два варианта указания пути к расширению Java для SQL Server:
Использовать внешние библиотеки
Самый простой способ — сделать так, чтобы SQL Server автоматически находил классы, создав внешние библиотеки и указав в библиотеке расположение JAR-файла. Использование внешних библиотек для Java
Зарегистрировать системную переменную среды
Вы можете создать системную переменную среды и указать пути к
.jarфайлу, который содержит классы. Создайте системную переменную среды с именемCLASSPATH.
Использование внешней библиотеки
В SQL Server 2019 (15.x) и более поздних версиях можно использовать внешние библиотеки для языка Java в Windows и Linux. Классы можно скомпилировать в файл .jar и загрузить файл .jar и другие зависимости в базу данных с помощью оператора DDL CREATE EXTERNAL LIBRARY.
Пример отправки .jar файла с внешней библиотекой:
CREATE EXTERNAL LIBRARY myJar
FROM (CONTENT = '<local path to .jar file>')
WITH (LANGUAGE = 'Java');
GO
При создании внешней библиотеки SQL Server автоматически имеет доступ к классам Java, и вам не нужно задавать специальные разрешения для пути класса.
Следующий код является примером вызова метода в классе из пакета, отправленного в виде внешней библиотеки:
EXECUTE sp_execute_external_script
@language = N'Java',
@script = N'MyPackage.MyCLass',
@input_data_1 = N'SELECT * FROM MYTABLE'
WITH RESULT SETS((column1 INT));
Дополнительные сведения см. в разделе CREATE EXTERNAL LIBRARY.
Петлевое подключение к SQL Server
Используйте loopback-подключение, чтобы снова подключиться к SQL Server через JDBC для чтения и записи данных из Java-кода, выполняемого из sp_execute_external_script. Это можно использовать, если невозможно использовать аргументы InputDataSet и OutputDataSet у sp_execute_external_script.
Чтобы создать петлевое подключение в Windows, используйте следующий пример.
jdbc:sqlserver://localhost:1433;databaseName=Adventureworks;integratedSecurity=true;
Чтобы установить loopback-подключение в Linux, драйверу JDBC требуются три свойства подключения, указанные в следующем сертификате.
Проверка подлинности на основе сертификата клиента