다음을 통해 공유


SQL Server 언어 확장에서 Java 런타임을 호출하는 방법

적용 대상: SQL Server 2019(15.x) 이상 버전

SQL Server 언어 확장 기능은 sp_execute_external_script 시스템 저장 프로시저를 인터페이스로 사용하여 Java 런타임을 호출합니다.

이 방법 문서에서는 SQL Server에서 실행되는 Java 클래스 및 메서드에 대한 구현 세부 정보를 설명합니다.

Java 클래스를 배치할 위치

SQL Server에는 다음과 같이 Java 클래스를 호출하는 두 가지 방법이 있습니다.

  1. .class 또는 .jar 파일을 Java classpath에 배치합니다.

  2. 외부 라이브러리 DDL을 사용하여 .jar 파일 및 기타 종속성에서 컴파일된 클래스를 데이터베이스에 업로드합니다.

참고 항목

일반적으로 개별 .class 파일이 아니라 .jar 파일을 사용하는 것이 좋습니다. 이는 Java에서 일반적인 방법이며 전반적인 환경을 더 쉽게 만듭니다. 또한 클래스 파일에서 Java .jar 파일 만들기를 참조하세요.

Classpath 사용

기본 원칙

다음은 SQL Server에서 Java를 실행할 때 몇 가지 기본 원칙입니다.

  • 컴파일된 사용자 지정 Java 클래스는 Java 클래스 경로의 .class 파일 또는 .jar 파일에 있어야 합니다. CLASSPATH 매개 변수는 컴파일된 Java 파일의 경로를 제공합니다.

  • 호출하는 Java 메서드는 저장 프로시저의 script 매개 변수에 제공되어야 합니다.

  • 클래스가 패키지에 속하면 packageName을(를) 제공해야 합니다.

  • params은(는) Java 클래스에 매개 변수를 전달하는 데 사용됩니다. 인수가 필요한 메서드 호출은 지원되지 않습니다. 따라서 매개 변수는 인수 값을 메서드에 전달하는 유일한 방법입니다.

참고 항목

이 참고 사항은 SQL Server 2019(15.x) 이상 버전에서 Java와 관련된 지원되는 작업과 지원되지 않는 작업을 다시 설명합니다. 저장 프로시저에서는 입력 매개 변수가 지원되지만 출력 매개 변수는 지원되지 않습니다.

Java 클래스 호출

sp_execute_external_script 시스템 저장 프로시저는 Java 런타임을 호출하기 위해 사용되는 인터페이스입니다. 다음 예제에서는 Java 확장 및 경로, 스크립트 및 사용자 지정 코드를 지정하기 위한 매개 변수를 사용하는 sp_execute_external_script을(를) 보여줍니다.

참고 항목

호출할 메서드를 정의할 필요가 없습니다. 기본적으로 execute(이)라는 메서드가 호출됩니다. 즉, SQL Server용 Java용 Microsoft 확장성을 따르고 Java 클래스에서 execute 메서드를 구현해야 합니다.

DECLARE @param1 INT

SET @param1 = 3

EXEC sp_execute_external_script @language = N'Java',
    @script = N'<packageName>.<ClassName>',
    @input_data_1 = N'<Input Query>',
    @param1 = @param1;

CLASSPATH 설정

Java 클래스(들)을 컴파일하고 Java classpath에서 .jar 파일을 만든 후에는 SQL Server Java 확장에 대한 경로를 제공하는 두 가지 옵션이 있습니다.

  1. 외부 라이브러리 사용

    가장 쉬운 방법은 외부 라이브러리를 만들고 라이브러리에서 jar를 가리켜 SQL Server가 자동으로 클래스를 찾도록 하는 것입니다. Java용 외부 라이브러리 사용

  2. 시스템 환경 변수 등록

    시스템 환경 변수를 만들고 클래스를 포함하는 .jar 파일의 경로를 제공할 수 있습니다. CLASSPATH(이)라는 시스템 환경 변수를 만듭니다.

외부 라이브러리 사용

SQL Server 2019(15.x) 이상 버전에서는 Windows 및 Linux에서 Java 언어에 대한 외부 라이브러리를 사용할 수 있습니다. CREATE EXTERNAL LIBRARY DDL을 사용하여 클래스를 .jar 파일로 컴파일하고 .jar 파일 및 기타 종속성을 데이터베이스에 업로드할 수 있습니다.

외부 라이브러리를 사용하여 .jar 파일을 업로드하는 방법의 예제:

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

외부 라이브러리를 만들면 SQL Server는 자동으로 Java 클래스에 액세스할 수 있으며 Classpath에 대한 특별 권한을 설정할 필요가 없습니다.

다음 코드는 외부 라이브러리로 업로드된 패키지에서 클래스의 메서드를 호출하는 예제입니다.

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

자세한 내용은 CREATE EXTERNAL LIBRARY를 참조하세요.

SQL Server에 대한 루프백 연결

루프백 연결을 사용하여 JDBC를 통해 SQL Server에 다시 연결하여 sp_execute_external_script에서 실행된 Java에서 데이터를 읽거나 씁니다. sp_execute_external_scriptInputDataSetOutputDataSet 인수를 사용할 수 없는 경우에 이 연결을 사용할 수 있습니다. Windows에서 루프백 연결을 만들려면 다음 예제를 사용합니다.

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

Linux에서 루프백 연결을 만들려면 JDBC 드라이버에 다음 인증서에 정의된 세 가지 연결 속성이 필요합니다.

클라이언트 인증서 인증