Linux에 SQL Server Java 언어 확장 설치

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

SQL Server on Linux용 Java 언어 확장 구성 요소를 설치하는 방법을 알아봅니다. Java 언어 확장은 SQL Server 언어 확장의 일부이며 데이터베이스 엔진의 추가 기능입니다.

데이터베이스 엔진과 언어 확장을 동시에 설치할 수 있지만, 더 많은 구성 요소를 추가하기 전에 문제를 해결할 수 있도록 먼저 SQL Server 데이터베이스 엔진을 설치하고 구성하는 것이 모범 사례입니다.

Prerequisites

  • Java 확장 패키지는 SQL Server Linux 소스 저장소에 있습니다. 이미 데이터베이스 엔진 설치용 소스 저장소를 설정했다면, 동일한 저장소 등록을 사용해 패키지 설치 명령을 실행 mssql-server-extensibility-java 하세요.
  • 언어 확장은 Linux 컨테이너에서도 지원됩니다. 언어 확장 기능이 포함된 미리 구축된 컨테이너는 제공되지 않지만, GitHub에 있는 예제 템플릿을 사용해 SQL Server 컨테이너에서 생성할 수 있습니다.

  • 언어 확장 및 Machine Learning Services는 SQL Server 빅 데이터 클러스터에 기본적으로 설치됩니다. 빅 데이터 클러스터를 사용하는 경우에는 이 문서의 단계를 수행하지 않아도 됩니다.

패키지 목록

인터넷에 연결된 기기에서는 각 운영체제의 패키지 설치 프로그램을 사용해 데이터베이스 엔진과 독립적으로 패키지를 다운로드하고 설치할 수 있습니다. 다음 표에서는 이용 가능한 모든 패키지에 대해 설명합니다.

패키지 이름 적용 대상 Description
mssql-server-extensibility 모든 언어 Java 언어 확장에 사용되는 확장성 프레임워크
mssql-server-extensibility-java Java Java 언어 확장에 사용되고 지원되는 Java 런타임을 포함하는 확장성 프레임워크

적용 대상: 리눅스 전용 SQL Server 2019 (15.x)

Java 언어 확장 설치

리눅스에서 언어 확장과 Java를 설치하려면 패키지를 mssql-server-extensibility-java 설치하세요. 이 패키지는 JRE 11을 자동으로 설치하고(아직 설치되어 있지 않다면), JVM 경로를 환경 변수 JRE_HOME에 추가합니다.

Java 언어 확장을 사용하도록 설정하려면 GitHub의 Java 언어 확장 페이지의 지침에 따라 사용자 지정 이진 파일을 빌드합니다.

메모

인터넷에 연결된 서버에서 패키지 종속성이 다운로드되고 주 패키지 설치의 일부로 설치됩니다. 서버가 인터넷에 연결되어 있지 않은 경우 오프라인 설정에서 자세한 정보를 참조하세요.

최신 Microsoft Build of OpenJDK나 공식 라이선스 Java 런타임을 포함해 모든 Java 런타임을 다운로드하고 설치할 수 있습니다. SQL Server 2022(16.x)부터는 SQL Server 설치 프로그램에서 Java 런타임을 설치하지 않습니다.

Java 언어 확장을 사용하도록 설정하려면 GitHub의 Java 언어 확장 페이지의 지침에 따라 사용자 지정 이진 파일을 빌드합니다.

Red Hat 설치 명령

Red Hat에서 Language Extensions for Java를 설치하려면 다음 명령을 사용하세요.

Tip

가능하면 yum clean all를 실행하여 설치하기 전에 시스템에서 패키지를 새로 고치십시오.

# Install as root or sudo
sudo yum install mssql-server-extensibility-java

Ubuntu 설치 명령

Ubuntu에서 Java Language Extensions를 설치하려면 다음 명령을 사용하세요.

Tip

가능하면 apt-get update를 실행하여 설치하기 전에 시스템에서 패키지를 새로 고치십시오. 일부 Ubuntu Docker 이미지에는 이 패키지가 apt-transport-https 포함되어 있지 않습니다. 설치하려면 apt-get install apt-transport-https를 실행합니다.

# Install as root or sudo
sudo apt-get install mssql-server-extensibility-java

SUSE 설치 명령

SUSE에 Java Language Extensions를 설치하려면 다음 명령을 사용하세요.

# Install as root or sudo
sudo zypper install mssql-server-extensibility-java

설치 후 설정 (필수)

  1. Linux에 사용 권한 부여

    외부 라이브러리를 사용하는 경우 이 단계를 수행할 필요가 없습니다. 외부 라이브러리가 권장되는 접근법입니다. 파일에서 jar 외부 라이브러리를 만드는 데 도움이 필요하시면 .를 참조하세요 CREATE EXTERNAL LIBRARY.

    외부 라이브러리를 사용하지 않는 경우 jar에서 Java 클래스를 실행할 수 있는 권한을 SQL Server 제공해야 합니다.

    파일에 읽기 및 실행 권한을 jar 부여하려면 파일에 다음 chmod 명령을 jar 실행하세요. SQL Server를 사용할 때는 항상 클래스 파일을 a jar 에 넣으세요. 만들기에 대한 도움말은 jar클래스 파일에서 Java .jar 파일 만들기를 참조 하세요.

    chmod ug+rx <MyJarFile.jar>
    

    또한 파일을 읽고 실행할 jar 권한도 부여 mssql_satellite 해야 합니다.

    chown mssql_satellite:mssql_satellite <MyJarFile.jar>
    

    추가 구성은 주로 mssql-conf tool을 통해 진행됩니다.

  2. SQL Server 서비스를 실행하는 데 사용되는 mssql 사용자 계정을 추가합니다. 이 단계는 이전에 설정을 실행해본 적이 없다면 필요합니다.

    sudo /opt/mssql/bin/mssql-conf setup
    
  3. 아웃바운드 네트워크 액세스를 사용하도록 설정합니다. 아웃바운드 네트워크 액세스는 기본적으로 사용 안 함으로 설정됩니다. 아웃바운드 요청을 활성화하려면 툴에서 mssql-conf 불리언 속성을 설정 outboundnetworkaccess 하세요. 자세한 내용은 mssql-conf를 사용하여 SQL Server on Linux 구성을 참조하세요.

    # Run as SUDO or root
    # Enable outbound requests over the network
    sudo /opt/mssql/bin/mssql-conf set extensibility outboundnetworkaccess 1
    
  4. SQL Server 실행 패드 서비스 및 데이터베이스 엔진 인스턴스를 다시 시작하여 INI 파일에서 업데이트된 값을 읽습니다. 확장 관련 설정을 변경할 때마다 리스타트 메시지가 알림을 줍니다.

    systemctl restart mssql-launchpadd
    systemctl restart mssql-server.service
    
  5. 외부 스크립트 실행을 사용하도록 설정합니다. sqlcmd, SSMS(SQL Server Management Studio) 또는 Visual Studio Code용 MSSQL 확장과 같은 친숙한 SQL Server 클라이언트 도구를 사용하여 SQL Server 인스턴스에 연결할 수 있습니다.

    EXECUTE sp_configure 'external scripts enabled', 1;
    
    RECONFIGURE WITH OVERRIDE;
    
  6. mssql-launchpadd 서비스를 다시 시작합니다.

  7. 언어 확장을 사용하고 싶은 각 데이터베이스에 대해 외부 언어 CREATE EXTERNAL LANGUAGE를 등록하세요. 다음 섹션에서 단계별로 설명하세요.

외부 언어 등록

언어 확장을 사용하고 싶은 각 데이터베이스에 대해 외부 언어 CREATE EXTERNAL LANGUAGE를 등록하세요.

다음 예제는 Linux에서 실행되는 SQL Server의 데이터베이스에 외부 언어인 Java를 추가합니다.

CREATE EXTERNAL LANGUAGE Java
FROM (
    CONTENT = N'/opt/mssql-extensibility/lib/java-lang-extension.tar.gz',
    FILE_NAME = 'javaextension.so',
    ENVIRONMENT_VARIABLES = N'{"JRE_HOME":"/opt/mssql/lib/zulu-jre-11"}'
);

Java 확장의 경우, 환경 변수 JRE_HOME 가 JVM을 찾고 초기화하는 경로를 결정합니다.

DDL은 CREATE EXTERNAL LANGUAGE 확장 기능을 호스팅하는 프로세스의 환경 변수를 설정하는 매개변수를 제공합니다 ENVIRONMENT_VARIABLES . 이 매개변수를 사용하여 외부 언어 확장이 요구하는 환경 변수를 설정하세요.

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

설치 확인

Java 기능 통합에는 라이브러리가 포함되어 있지 않지만, 환경 변수가 존재하는지 JRE_HOME 확인하기 위해 실행할 grep -r JRE_HOME /etc 수 있습니다.

설치의 유효성을 검사하려면 Java를 호출하는 시스템 저장 프로시저를 실행하는 T-SQL 스크립트를 실행합니다. 이 태스크에는 쿼리 도구가 필요합니다. sqlcmd, SSMS(SQL Server Management Studio) 또는 Visual Studio Code용 MSSQL 확장과 같은 친숙한 SQL Server 클라이언트 도구를 사용하여 SQL Server 인스턴스에 연결할 수 있습니다.

SQL Server 및 Java 언어 확장의 전체 설치

데이터베이스 엔진과 Java Language Extension을 하나의 프로시저로 설치 및 설정하려면, Java 패키지와 매개변수를 데이터베이스 엔진을 설치하는 명령어에 추가하세요.

  1. 데이터베이스 엔진 및 언어 확장 기능을 포함하는 명령줄을 제공합니다.

    다음 명령어는 데이터베이스 엔진 설치에 Java 확장성을 추가합니다.

    sudo yum install -y mssql-server mssql-server-extensibility-java
    
  2. 사용권 계약에 동의하고 설치 후 구성을 완료합니다. 도구를 사용 mssql-conf 하세요.

    sudo /opt/mssql/bin/mssql-conf setup
    

    이 단계에서는 데이터베이스 엔진에 대한 사용권 계약에 동의하고, 버전을 선택하고, 관리자 암호를 설정하라는 메시지가 표시됩니다.

  3. 요청하면 서비스를 재시작하세요.

    sudo systemctl restart mssql-server.service
    

무인 설치

데이터베이스 엔진에 대한 무인 설치를 사용하고 mssql-server-extensibility-java용 패키지를 추가합니다.

오프라인 설치

패키지를 설치하려면 오프라인 설치 지침을 따르세요. 다운로드 사이트를 찾아서 이 섹션 후반에 나열된 특정 패키지를 다운로드하세요.

Tip

여러 패키지 관리 도구들이 패키지 의존성을 판단하는 데 도움을 주는 명령어를 제공합니다. yum의 경우 sudo yum deplist [package]을 사용합니다. Ubuntu의 경우 sudo apt-get install --reinstall --download-only [package name]dpkg -I [package name].deb을 차례로 사용합니다.

다운로드 사이트

패키지를 .에서 https://packages.microsoft.com/다운로드하세요. 이 사이트는 데이터베이스 엔진 패키지와 함께 모든 Java 패키지를 호스팅합니다.

다운로드 경로

Package Distribution 다운로드 위치
mssql/extensibility-java packages 레드햇 8 https://packages.microsoft.com/rhel/8/mssql-server-2019/
mssql/extensibility-java packages SUSE v15 https://packages.microsoft.com/sles/15/mssql-server-2019/
mssql/extensibility-java packages Ubuntu 20.04 https://packages.microsoft.com/ubuntu/20.04/mssql-server-2019/pool/main/m/

패키지 목록

사용하려는 확장에 따라 특정 언어에 필요한 패키지를 다운로드합니다. 정확한 파일 이름에는 접미사에 플랫폼 정보가 포함되어 있지만, 다음 파일명이 어떤 파일을 받을지 결정하는 데 도움이 됩니다.

  • 핵심 패키지

    • mssql-server-15.0.1000
    • mssql-server-extensibility-15.0.1000
  • Java

    • mssql-server-extensibility-java-15.0.1000

Limitations

리눅스에서는 암묵적 인증이 지원되지 않습니다. 외부 프로세스에서 실행되는 Java 코드는 서버에 다시 연결되어 데이터나 다른 자원에 접근할 수 없습니다.

리소스 거버넌스

리눅스와 Windows는 외부 자원 풀에 대한 자원 거버넌스에 동등한 수준을 가지고 있지만, 현재 sys.dm_resource_governor_external_resource_pools 통계에서는 리눅스에서 다른 단위가 나뉘어 있습니다.

메모

다음 표의 통계는 지정된 통제 그룹(cgroups) 하위 시스템에서 수집되었습니다.

열 이름 Description Linux에서의 값
peak_memory_kb 자원 풀이 사용하는 최대 메모리입니다. Linux에서 이 통계의 출처는 memory 하위 시스템이며 값은 memory.max_usage_in_bytes입니다
write_io_count Resource Governor 통계가 마지막으로 초기화된 이후 발행된 총 쓰기 IO입니다. Linux에서 이 통계의 출처는 blkio 하위 시스템이며 쓰기 행의 값은 blkio.throttle.io_serviced입니다
read_io_count Resource Governor 통계의 마지막 초기화 이후 발행된 총 읽기 IO입니다. Linux에서는 이 통계가 서브시스템에서 가져 blkio 오며, 읽은 행의 값은 blkio.throttle.io_serviced
total_cpu_kernel_ms Resource Governor 통계가 마지막으로 초기화된 이후 누적 CPU 사용자 커널 시간(밀리초 단위)입니다. Linux에서 이 통계의 출처는 cpuacct 하위 시스템이며 사용자 행의 값은 cpuacct.stat입니다
total_cpu_user_ms Resource Governor 통계가 마지막으로 초기화된 이후 누적 CPU 사용자 시간(밀리초 단위)입니다. Linux에서는 이 통계가 서브시스템에서 가져 cpuacct 오며, 시스템 행의 값은 다음과 같습니다 cpuacct.stat
active_processes_count 요청 순간에 실행되는 외부 프로세스의 수입니다. Linux에서 이 통계의 출처는 pids 하위 시스템이며 값은 pids.current입니다