Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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:
Coloque
.classou.jararquivos em seu classpath Java.Carregue classes compiladas em um
.jararquivo 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
.classarquivos ou.jararquivos 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
scriptparâmetro no procedimento armazenado.Se a classe pertence a um pacote, o
packageNamedeve 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:
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
Registrar uma variável de ambiente do sistema
Você pode criar uma variável de ambiente do sistema e fornecer os caminhos para o
.jararquivo que contém as classes. Crie uma variável de ambiente do sistema chamadaCLASSPATH.
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