다음을 통해 공유


SQL Server용 Java용 Microsoft 확장성 SDK

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

Java용 Microsoft 확장성 SDK를 사용하여 SQL Server용 Java 프로그램을 구현하는 방법을 알아봅니다. SDK는 SQL Server와 데이터를 교환하고 SQL Server에서 Java 코드를 실행하는 데 사용되는 Java 언어 확장의 인터페이스입니다.

SDK는 Windows 및 Linux 모두에 SQL Server 2019(15.x) 이상 버전의 일부로 설치됩니다.

  • Windows의 기본 설치 경로: <instance installation home directory>\MSSQL\Binn\mssql-java-lang-extension.jar
  • Linux의 기본 설치 경로: /opt/mssql/lib/mssql-java-lang-extension.jar

코드는 오픈 소스이며 SQL Server 언어 확장 GitHub 리포지토리에서 찾을 수 있습니다.

구현 요구 사항

SDK 인터페이스는 SQL Server가 Java 런타임과 통신하기 위해 충족해야 하는 요구 사항 집합을 정의합니다. SDK를 사용하려면 기본 클래스의 일부 구현 규칙을 따라야 합니다. 그런 다음 SQL Server는 Java 클래스에서 특정 메서드를 실행하고 Java 언어 확장을 사용하여 데이터를 교환할 수 있습니다.

SDK를 사용하는 방법에 대한 예제는 자습서: Java에서 정규식(regex)을 사용하여 문자열 검색을 참조하세요.

SDK 클래스

SDK는 세 가지 클래스로 구성되어 있습니다.

Java 확장에서 SQL Server와 데이터를 교환하는 데 사용하는 인터페이스를 정의하는 두 가지 추상 클래스:

  • AbstractSqlServerExtensionExecutor
  • AbstractSqlServerExtensionDataset

세 번째 클래스는 데이터 집합 개체의 구현을 포함하는 도우미 클래스입니다. 이 클래스는 사용할 수 있는 선택적 클래스로, 더 쉽게 시작할 수 있습니다. 이러한 클래스의 고유한 구현을 대신 사용할 수도 있습니다.

  • PrimitiveDataset

다음 섹션에서는 SDK에서 각 클래스에 대한 설명을 찾습니다. SDK 클래스의 소스 코드는 SQL Server 언어 확장 GitHub 리포지토리에서 사용할 수 있습니다.

클래스: AbstractSqlServerExtensionExecutor

추상 클래스 AbstractSqlServerExtensionExecutor에는 SQL Server용 Java 언어 확장에서 Java 코드를 실행하는 데 사용되는 인터페이스가 포함되어 있습니다.

기본 Java 클래스는 이 클래스에서 상속해야 합니다. 이 클래스에서 상속한다는 것은 고유한 클래스에서 구현해야 하는 특정 메서드가 클래스에 있음을 의미합니다.

이 추상 클래스에서 상속하려면 클래스 선언에서 추상 클래스 이름으로 확장합니다.

public class <MyClass> extends AbstractSqlServerExtensionExecutor {}

최소한, 기본 클래스는 execute(...) 메서드를 구현해야 합니다.

메서드 execute

execute 메서드는 SQL Server에서 Java 코드를 호출하기 위해 Java 언어 확장을 통해 SQL Server에서 호출되는 메서드입니다. SQL Server에서 실행하려는 주요 작업을 포함하는 주요 메서드입니다.

SQL Server에서 Java에 메서드 인수를 전달하려면 @param에서 sp_execute_external_script 매개 변수를 사용합니다. execute 메서드는 해당 방식으로 인수를 사용합니다.

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

Method init

init 메서드는 생성자 뒤와 execute 메서드 앞에 실행됩니다. execute(...) 이전에 수행해야 하는 모든 작업은 이 메서드에서 수행할 수 있습니다.

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

클래스: AbstractSqlServerExtensionDataset

추상 클래스 AbstractSqlServerExtensionDataset에는 Java 확장에서 사용하는 입력 및 출력 데이터를 처리하기 위한 인터페이스가 포함되어 있습니다.

클래스: PrimitiveDataset

PrimitiveDataset 클래스는 단순 형식을 기본 배열로 저장하는 AbstractSqlServerExtensionDataset의 구현입니다.

PrimitiveDataset은(는) 선택적 도우미 클래스로 SDK에서 제공됩니다. 이 클래스를 사용하지 않는 경우 AbstractSqlServerExtensionDataset에서 상속하는 자체 클래스를 구현해야 합니다.