Пакет SDK Майкрософт для расширения возможностей Java в SQL Server
Область применения: SQL Server 2019 (15.x) и более поздних версий
Узнайте, как реализовать программу Java для SQL Server с помощью пакета Microsoft Extensibility SDK для Java. Пакет SDK — это интерфейс для расширения языка Java, который используется для обмена данными с SQL Server и выполнения кода Java из SQL Server.
Пакет SDK устанавливается в составе SQL Server 2019 (15.x) и более поздних версий в Windows и Linux:
- Путь установки по умолчанию в Windows:
<instance installation home directory>\MSSQL\Binn\mssql-java-lang-extension.jar
- Путь установки по умолчанию в Linux:
/opt/mssql/lib/mssql-java-lang-extension.jar
Это открытый код, который можно найти в репозитории расширений языка SQL Server в GitHub.
Требования к реализации
Интерфейс SDK определяет набор требований, которые должны быть выполнены для того, чтобы SQL Server мог взаимодействовать со средой выполнения Java. Чтобы использовать пакет SDK, необходимо выполнить некоторые правила реализации в основном классе. После этого SQL Server сможет выполнять определенный метод в классе Java и обмениваться данными с помощью расширения языка Java.
Пример использования пакета SDK см. в руководстве по поиску строки с помощью регулярных выражений (regex) в Java.
Классы SDK
Пакет SDK состоит из трех классов.
Два абстрактных класса определяют интерфейс, который расширение Java использует для обмена данными с SQL Server:
AbstractSqlServerExtensionExecutor
AbstractSqlServerExtensionDataset
Третий класс является вспомогательным и содержит реализацию объекта набора данных. Это необязательный класс, который упрощает начало работы. Вместо него можно использовать собственную реализацию такого класса.
PrimitiveDataset
В следующем разделе описаны описания каждого класса в пакете SDK. Исходный код классов в пакете SDK доступен в репозитории расширений языка SQL Server в GitHub.
Класс: AbstractSqlServerExtensionExecutor
Абстрактный класс AbstractSqlServerExtensionExecutor
содержит интерфейс, используемый для выполнения кода Java расширением языка Java для SQL Server.
Основной класс Java должен наследовать этому классу. Наследование этому классу означает наличие в классе определенных методов, которые должны быть реализованы в вашем собственном классе.
Для наследования этому абстрактному классу можно расширить имя этого абстрактного класса в объявлении класса:
public class <MyClass> extends AbstractSqlServerExtensionExecutor {}
Ваш основной класс должен, как минимум, реализовывать метод execute(...).
Метод execute
Метод execute — это метод, который вызывается из SQL Server через расширение языка Java для вызова кода Java из SQL Server. Это ключевой метод, в котором вы включаете основные операции, которые вы хотите выполнить из SQL Server.
Чтобы передать аргументы метода в Java из SQL Server, используйте параметр @param
в sp_execute_external_script
. Метод execute
принимает его аргументы таким образом.
public AbstractSqlServerExtensionDataset execute(AbstractSqlServerExtensionDataset input, LinkedHashMap<String, Object> params) {}
Метод init
Метод init выполняется после конструктора и перед методом выполнения . Все операции, которые необходимо выполнить перед execute(...)
выполнением этого метода.
public void init(String sessionId, int taskId, int numtask) {}
Класс: AbstractSqlServerExtensionDataset
Абстрактный класс AbstractSqlServerExtensionDataset
содержит интерфейс для обработки входных и выходных данных, используемых расширением Java.
Класс: PrimitiveDataset
Класс PrimitiveDataset
представляет собой реализацию AbstractSqlServerExtensionDataset
, которая сохраняет простые типы как примитивы массивов.
PrimitiveDataset
предоставляется в пакете SDK как дополнительный вспомогательный класс. Если этот класс не используется, необходимо реализовать собственный класс, наследующий от AbstractSqlServerExtensionDataset
.