Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения: 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 требуются три свойства подключения, определенные в следующем сертификате.
Проверка подлинности на основе сертификата клиента