Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Область применения: SQL Server 2019 (15.x) и более поздних версий
Функция расширения языка SQL Server использует системную хранимую процедуру sp_execute_external_script в качестве интерфейса для вызова среды выполнения Java.
В этой статье описываются детали реализации классов и методов Java, которые выполняются в SQL Server.
Место размещения классов Java
Существует два метода вызова классов Java в SQL Server:
Поместите
.classили.jarфайлы в путь к классу Java.Отправьте скомпилированные классы в файл и другие зависимости в
.jarбазу данных с помощью DDL внешней библиотеки .
Примечание.
В качестве общей рекомендации используйте .jar файлы, а не отдельные .class файлы. Это распространенная методика при работе с языком Java, которая в целом упрощает работу. См. также, как создать файл java .jar из файлов классов.
Использование пути к классу
Основные принципы
Ниже приведены некоторые основные принципы при выполнении Java на SQL Server.
Скомпилированные пользовательские классы Java должны существовать в
.classфайлах или.jarфайлах в классе 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 метод. Это означает, что необходимо следовать пакету SDK расширяемости Microsoft для Java для SQL Server и реализовать метод выполнения в классе 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.
Пример отправки .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 LANGUAGE.
Подключение к SQL Server с замыканием на себя
Используйте подключение с замыканием на себя для обратного соединения с SQL Server через JDBC с целью чтения или записи данных из кода Java, выполняемого с помощью процедуры sp_execute_external_script. Это можно использовать, если использовать InputDataSet аргументы и OutputDataSet аргументы sp_execute_external_script не возможны.
Чтобы установить подключение с замыканием на себя в Windows, используйте следующий пример.
jdbc:sqlserver://localhost:1433;databaseName=Adventureworks;integratedSecurity=true;
Для установки подключения с замыканием на себя в Linux драйверу JDBC требуются три свойства подключения, определенные в следующем сертификате.
Проверка подлинности на основе сертификата клиента