SDK de extensibilidade da Microsoft para Java para SQL Server

Aplica-se a: SQL Server 2019 (15.x) e versões posteriores

Saiba como implementar um programa Java para o SQL Server usando o SDK de Extensibilidade da Microsoft para Java. O SDK é uma interface para a extensão de linguagem Java que é usado para trocar dados com SQL Server e para executar código Java do SQL Server.

O SDK é instalado como parte do SQL Server 2019 (15.x) e versões posteriores, tanto no Windows quanto no Linux:

  • Caminho de instalação padrão no Windows: <instance installation home directory>\MSSQL\Binn\mssql-java-lang-extension.jar
  • Caminho de instalação padrão no Linux: /opt/mssql/lib/mssql-java-lang-extension.jar

O código é de software livre e pode ser encontrado no Repositório GitHub de Extensões de Linguagem do SQL Server.

Requisitos de implementação

A interface do SDK define um conjunto de requisitos que precisam ser atendidos para que o SQL Server se comunique com o runtime do Java. Para usar o SDK, você precisa seguir algumas regras de implementação em sua classe principal. O SQL Server pode executar um método específico na classe Java e trocar dados usando a extensão de linguagem Java.

Para obter um exemplo de como você pode usar o SDK, confira o Tutorial: Pesquisar uma cadeia de caracteres usando regex (expressões regulares) em Java.

Classes de SDK

O SDK consiste em três classes.

Duas classes abstratas que definem a interface que a extensão Java usa para trocar dados com o SQL Server:

  • AbstractSqlServerExtensionExecutor
  • AbstractSqlServerExtensionDataset

A terceira classe é uma classe auxiliar, que contém uma implementação de um objeto de conjunto de dados. Trata-se de uma classe opcional que você pode usar, o que torna mais fácil começar. Você também pode usar sua própria implementação de uma classe desse tipo.

  • PrimitiveDataset

Na seção a seguir, você encontrará descrições de cada classe no SDK. O código-fonte das classes de SDK está disponível no Repositório GitHub de extensões de linguagem do SQL Server.

Classe: AbstractSqlServerExtensionExecutor

A classe abstrata AbstractSqlServerExtensionExecutor contém a interface usada para executar o código Java pela extensão de linguagem Java para SQL Server.

Sua classe Java principal precisa herdar dessa classe. Herdar dessa classe significa que há certos métodos na classe que você precisa implementar em sua própria classe.

Para herdar dessa classe abstrata, você estende com o nome da classe abstrata na declaração de classe:

public class <MyClass> extends AbstractSqlServerExtensionExecutor {}

No mínimo, sua classe principal precisa implementar o método execute(...).

Método Execute

O método Execute é o método que é chamado no SQL Server por meio da extensão de linguagem Java para invocar o código Java do SQL Server. Trata-se de um método-chave em que você inclui as operações principais que deseja executar no SQL Server.

Para passar argumentos de método para o Java no SQL Server, use o parâmetro @param no sp_execute_external_script. O método execute recebe argumentos dessa maneira.

public AbstractSqlServerExtensionDataset execute(AbstractSqlServerExtensionDataset input, LinkedHashMap<String, Object> params)  {}

Método Init

O método init é executado após o construtor e antes do método execute. Todas as operações que precisam ser executadas antes de execute(...) podem ser feitas neste método.

public void init(String sessionId, int taskId, int numtask) {}

Classe: AbstractSqlServerExtensionDataset

A classe abstrata AbstractSqlServerExtensionDataset contém a interface para manipular dados de entrada e saída usados pela extensão Java.

Classe: PrimitiveDataset

A classe PrimitiveDataset é uma implementação de AbstractSqlServerExtensionDataset que armazena tipos simples como matrizes primitivas.

PrimitiveDataset é fornecida no SDK simplesmente como uma classe auxiliar opcional. Se você não usar essa classe, precisará implementar sua própria classe que herda de AbstractSqlServerExtensionDataset.