Linux에 SQL Server Java 언어 확장 설치

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

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

데이터베이스 엔진 및 언어 확장을 동시에 설치할 수 있지만 구성 요소를 추가하기 전에 문제를 해결할 수 있도록 먼저 SQL Server 데이터베이스 엔진 설치하고 구성하는 것이 좋습니다.

사전 요구 사항

  • Java 확장의 패키지 위치는 SQL Server Linux 원본 리포지토리에 있습니다. 데이터베이스 엔진 설치에 대한 원본 리포지토리를 이미 구성한 경우 동일한 리포지토리 등록을 사용하여 패키지 설치 명령을 실행할 mssql-server-extensibility-java 수 있습니다.
  • 언어 확장은 Linux 컨테이너에서도 지원됩니다. 미리 빌드된 컨테이너에는 언어 확장이 제공되지 않지만 GitHub에서 사용할 수 있는 예제 템플릿을 사용하여 SQL Server 컨테이너에서 만들 수 있습니다.

  • 언어 확장 및 Machine Learning Services는 SQL Server 빅 데이터 클러스터에 기본적으로 설치됩니다. 빅 데이터 클러스터 사용하는 경우 이 문서의 단계를 따를 필요가 없습니다. 자세한 내용은 SQL Server 2019 빅 데이터 클러스터 Machine Learning Services를 사용하여 Python 및 R 스크립트 실행을 참조하세요.

패키지 목록

인터넷에 연결된 디바이스에서 패키지는 각 운영 체제에 대한 패키지 설치 관리자를 사용하여 데이터베이스 엔진 독립적으로 다운로드되고 설치됩니다. 다음 표에서는 이용 가능한 모든 패키지에 대해 설명합니다.

패키지 이름 적용 대상 설명
mssql-server-extensibility 모든 언어 Java 언어 확장에 사용되는 확장성 프레임워크
mssql-server-extensibility-java Java 적용 대상: Linux에서만 SQL Server 2019(15.x)

Java 언어 확장에 사용되고 지원되는 Java 런타임을 포함하는 확장성 프레임워크

Java 언어 확장 설치

를 설치하여 Linux에 언어 확장 및 Java를 설치할 수 있습니다 mssql-server-extensibility-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에 Java용 언어 확장을 설치할 수 있습니다.

가능하면 yum clean all을 실행하여 설치 전에 시스템에서 패키지를 새로 고칩니다.

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

Ubuntu 설치 명령

다음 명령을 사용하여 Ubuntu에 Java용 언어 확장을 설치할 수 있습니다.

가능하면 apt-get update을 실행하여 설치 전에 시스템에서 패키지를 새로 고칩니다. 또한 Ubuntu의 일부 docker 이미지에는 https apt 전송 옵션이 없을 수도 있습니다. 설치하려면 apt-get install apt-transport-https를 사용합니다.

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

SUSE 설치 명령

다음 명령을 사용하여 SUSE에 Java용 언어 확장을 설치할 수 있습니다.

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

설치 후 구성(필수)

  1. Linux에 사용 권한 부여

    외부 라이브러리를 사용하는 경우 이 단계를 수행할 필요가 없습니다. 권장되는 작업 방법은 외부 라이브러리를 사용하는 것입니다. 파일에서 외부 라이브러리를 만드는 방법에 대한 도움말은 CREATE EXTERNAL LIBRARY를 참조하세요jar.

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

    파일에 대한 읽기 및 실행 액세스 권한을 jar 부여하려면 파일에서 다음 chmod 명령을 jar 실행합니다. SQL Server로 작업할 때는 항상 클래스 파일을 jar 배치하는 것이 좋습니다. 만들기에 대한 도움말은 jar클래스 파일에서 Java jar 파일 만들기를 참조 하세요.

    chmod ug+rx <MyJarFile.jar>
    

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

    chown mssql_satellite:mssql_satellite <MyJarFile.jar>
    

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

  2. mssql SQL Server 서비스를 실행하는 데 사용되는 사용자 계정을 추가합니다. 이는 이전에 설치를 실행하지 않은 경우에 필요합니다.

    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. Azure Data Studio 또는 T-SQL을 실행하는 SQL Server Management Studio(Windows 전용)와 같은 다른 도구를 사용하여 외부 스크립트 실행을 사용하도록 설정합니다.

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

  7. 언어 확장을 사용하려는 각 데이터베이스에 대해 외부 언어 만들기를 사용하여 외부 언어를 등록해야 합니다. 다음 섹션에서 단계를 참조하세요.

외부 언어 등록

언어 확장을 사용하려는 각 데이터베이스에 대해 외부 언어 만들기를 사용하여 외부 언어를 등록해야 합니다.

다음 예제는 SQL Server on Linux의 데이터베이스에 외부 언어가 호출한 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)를 제공합니다. 이 프로세스는 외부 언어 확장에 필요한 환경 변수를 설정하는 권장되고 가장 효과적인 방법입니다.

자세한 내용은 외부 언어 만들기를 참조하세요.

설치 확인

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

설치의 유효성을 검사하려면 Java를 호출하는 시스템 저장 프로시저를 실행하는 T-SQL 스크립트를 실행합니다. 이 작업에 대한 쿼리 도구가 필요합니다. Azure Data Studio를 선택하는 것이 좋습니다. SQL Server Management Studio와 같은 다른 일반적으로 사용되는 도구는 Windows 전용입니다. 이러한 도구를 사용하는 Windows 컴퓨터가 있는 경우 이를 사용하여 데이터베이스 엔진 Linux 설치에 연결합니다.

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

데이터베이스 엔진 설치하는 명령에 Java 패키지 및 매개 변수를 추가하여 한 절차에서 데이터베이스 엔진 및 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.

오프라인 설치

패키지 설치 단계의 오프라인 설치 지침을 따릅니다. 다운로드 사이트를 찾은 다음 이 섹션의 뒷부분에 있는 패키지 목록을 사용하여 특정 패키지를 다운로드합니다.

여러 패키지 관리 도구에서 패키지 종속성을 확인하는 데 도움이 되는 명령을 제공합니다. Yum의 경우 sudo yum deplist [package]를 사용합니다. Ubuntu의 경우 dpkg -I [package name].debsudo apt-get install --reinstall --download-only [package name]을 차례로 사용합니다.

다운로드 사이트

https://packages.microsoft.com/에서 패키지를 다운로드할 수 있습니다. Java용 모든 패키지는 데이터베이스 엔진 패키지와 함께 배치됩니다.

다운로드 경로

Package(패키지) 배포 다운로드 위치
mssql/extensibility-java packages Red Hat 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

제한 사항

현재 Linux에서는 암시적 인증을 사용할 수 없습니다. 즉, 진행 중인 Java에서 서버에 다시 연결하여 데이터 또는 기타 리소스에 액세스할 수 없습니다.

리소스 거버넌스

외부 리소스 풀에 대한 Linux와 Windows for Resource Governance 간에는 패리티가 있지만 sys.dm_resource_governor_external_resource_pools 대한 통계는 현재 Linux에서 서로 다른 단위를 가지고 있습니다.

참고 항목

다음 표의 통계는 지정된 컨트롤 그룹(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