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