Partilhar via


SDK de Extensibilidade da Microsoft para Java no SQL Server

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

Aprenda como pode implementar um programa Java para SQL Server usando o Microsoft Extensibility SDK para Java. O SDK é uma interface para a extensão da linguagem Java usada para trocar dados com o SQL Server e executar código Java a partir do SQL Server.

O SDK está instalado como parte do SQL Server 2019 (15.x) e versões posteriores, tanto para Windows como para 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 é open source e pode ser encontrado no repositório SQL Server Language Extensions GitHub.

Requisitos de implementação

A interface SDK define um conjunto de requisitos que precisam de ser cumpridos para que o SQL Server possa comunicar com o runtime Java. Para usar o SDK, precisas de seguir algumas regras de implementação na tua classe principal. O SQL Server pode então executar um método específico na classe Java e trocar dados usando a extensão da linguagem Java.

Para um exemplo de como pode usar o SDK, veja Tutorial: Procure uma string usando expressões regulares (regex) em Java.

Classes do SDK

O SDK é composto por três classes.

Duas classes abstratas que definem a interface que a extensão Java utiliza 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. É uma classe opcional que podes usar, o que facilita o início. Também podes usar a tua própria implementação dessa classe.

  • PrimitiveDataset

Na secção seguinte, encontras descrições de cada classe no SDK. O código-fonte das classes SDK está disponível no repositório GitHub das Extensões da Linguagem SQL Server.

Classe: AbstractSqlServerExtensionExecutor

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

A tua classe principal Java tem de herdar desta classe. Herdar desta classe significa que há certos métodos na classe que precisas de implementar na tua própria classe.

Para herdar desta classe abstrata, utilize o nome da classe abstrata na declaração da classe.

public class <MyClass> extends AbstractSqlServerExtensionExecutor {}

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

Execução do método

O método execute é o método que é chamado a partir do SQL Server através da extensão da linguagem Java, para invocar código Java a partir do SQL Server. É um método chave onde inclui as principais operações que deseja executar a partir do SQL Server.

Para passar argumentos de método para Java a partir do SQL Server, use o @param parâmetro em sp_execute_external_script. O método execute apresenta os seus argumentos dessa forma.

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 executar . Quaisquer operações que precisem de ser realizadas antes execute(...) podem ser feitas neste método.

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

Classe: AbstractSqlServerExtensionDataset

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

Classe: PrimitiveDataset

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

PrimitiveDataset é fornecido no SDK como uma classe auxiliar opcional. Se não usares esta classe, tens de implementar a tua própria classe que herda de AbstractSqlServerExtensionDataset.