Partilhar via


Como chamar o tempo de execução Java em extensões de linguagem do SQL Server

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

O recurso Extensões de Linguagem do SQL Server usa o procedimento armazenado do sistema sp_execute_external_script como a interface para chamar o tempo de execução do Java.

Este artigo de instruções explica detalhes de implementação para classes Java e métodos que são executados no SQL Server.

Onde colocar aulas Java

Há dois métodos para chamar classes Java no SQL Server:

  1. Coloque .class ou .jar arquivos em seu classpath Java.

  2. Carregue classes compiladas em um .jar arquivo e outras dependências no banco de dados usando a biblioteca externa DDL.

Observação

Como recomendação geral, use .jar arquivos e não arquivos individuais .class . Esta é uma prática comum em Java e tornará a experiência geral mais fácil. Consulte também, Criar um arquivo Java .jar a partir de arquivos de classe.

Usar o classpath

Princípios básicos

A seguir estão alguns princípios básicos ao executar Java no SQL Server.

  • Classes Java personalizadas compiladas devem existir em .class arquivos ou .jar arquivos em seu classpath Java. O parâmetro CLASSPATH fornece o caminho para os arquivos Java compilados.

  • O método Java que você está chamando deve ser fornecido no script parâmetro no procedimento armazenado.

  • Se a classe pertence a um pacote, o packageName deve ser fornecido.

  • params é usado para passar parâmetros para uma classe Java. Não há suporte para chamar um método que requer argumentos. Portanto, os parâmetros são a única maneira de passar valores de argumento para o seu método.

Observação

Esta nota reafirma operações com e sem suporte específicas para Java no SQL Server 2019 (15.x) e versões posteriores. No procedimento armazenado, os parâmetros de entrada são suportados, enquanto os parâmetros de saída não são suportados.

Chamar classe Java

O procedimento armazenado do sistema sp_execute_external_script é a interface usada para chamar o tempo de execução Java. O exemplo a seguir mostra um sp_execute_external_script usando a extensão Java e parâmetros para especificar caminho, script e seu código personalizado.

Observação

Você não precisa definir qual método chamar. Por padrão, um método chamado execute é chamado. Isso significa que você precisa seguir o SDK de extensibilidade da Microsoft para Java para SQL Server e implementar um método execute em sua classe 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;

Definir CLASSPATH

Depois de compilar sua classe ou classes Java e criar um .jar arquivo em seu Java classpath, você tem duas opções para fornecer o caminho para a extensão Java do SQL Server:

  1. Usar bibliotecas externas

    A opção mais fácil é fazer com que o SQL Server encontre automaticamente suas classes criando bibliotecas externas e apontando a biblioteca para um jar. Usar bibliotecas externas para Java

  2. Registrar uma variável de ambiente do sistema

    Você pode criar uma variável de ambiente do sistema e fornecer os caminhos para o .jar arquivo que contém as classes. Crie uma variável de ambiente do sistema chamada CLASSPATH.

Usar biblioteca externa

No SQL Server 2019 (15.x) e versões posteriores, você pode usar bibliotecas externas para a linguagem Java no Windows e Linux. Você pode compilar suas classes em um .jar arquivo e carregar o .jar arquivo e outras dependências no banco de dados usando o CREATE EXTERNAL LIBRARY DDL.

Exemplo de como carregar um ficheiro com uma .jar biblioteca externa:

CREATE EXTERNAL LIBRARY myJar
    FROM (CONTENT = '<local path to .jar file>')
    WITH (LANGUAGE = 'Java');
GO

Quando ele cria uma biblioteca externa, o SQL Server automaticamente tem acesso às classes Java e você não precisa definir nenhuma permissão especial para o classpath.

O código a seguir é um exemplo de chamada de um método em uma classe de um pacote, carregado como uma biblioteca externa:

EXECUTE sp_execute_external_script
    @language = N'Java',
    @script = N'MyPackage.MyCLass',
    @input_data_1 = N'SELECT * FROM MYTABLE'
WITH RESULT SETS((column1 INT));

Para obter mais informações, consulte CREATE EXTERNAL LIBRARY.

Conexão de loopback com o SQL Server

Use uma conexão de loopback para se conectar novamente ao SQL Server por JDBC para ler ou gravar dados do Java executados a partir do sp_execute_external_script. Você pode usar isso quando usar os InputDataSet argumentos sp_execute_external_script e OutputDataSet de não são possíveis. Para fazer uma conexão de loopback no Windows, use o seguinte exemplo:

jdbc:sqlserver://localhost:1433;databaseName=Adventureworks;integratedSecurity=true;

Para fazer uma conexão de loopback no Linux, o driver JDBC requer três propriedades de conexão definidas no seguinte certificado:

Cliente-Certificado-Autenticação