Instalowanie rozszerzenia języka Java programu SQL Server w systemie Linux

Dotyczy: SQL Server 2019 (15.x) w systemie Linux i nowszych wersjach

Dowiedz się, jak zainstalować składnik rozszerzenia języka Java dla programu SQL Server w systemie Linux. Rozszerzenie języka Java jest częścią SQL Server Language Extensions i dodatkiem do silnika bazy danych.

Mimo że aparat bazy danych i rozszerzenia języka można zainstalować jednocześnie, najlepiej jest najpierw zainstalować i skonfigurować aparat bazy danych programu SQL Server, aby móc rozwiązać wszelkie problemy przed dodaniem kolejnych składników.

Wymagania wstępne

  • Pakiet rozszerzeń Java znajduje się w repozytoriach źródłowych SQL Server Linux. Jeśli już skonfigurowałeś repozytoria źródłowe dla instalacji Database Engine, uruchom mssql-server-extensibility-java polecenia instalacyjne pakietu używając tej samej rejestracji repozytorium.
  • Rozszerzenia językowe są również obsługiwane w kontenerach systemu Linux. Gotowe kontenery z rozszerzeniami języka nie są dostępne, ale możesz stworzyć jeden z kontenerów SQL Server, korzystając z przykładowego szablonu dostępnego na GitHub.

  • Rozszerzenia języka i usługi Machine Learning Services są instalowane domyślnie w klastrach danych big data programu SQL Server. Jeśli używasz klastrów danych big data, nie musisz wykonywać kroków opisanych w tym artykule.

Lista pakietów

Na urządzeniu podłączonym do internetu pobierasz i instalujesz pakiety niezależnie od Database Engine, korzystając z instalatora pakietów dla każdego systemu operacyjnego. W poniższej tabeli opisano wszystkie dostępne pakiety.

Nazwa pakietu Dotyczy Description
mssql-server-extensibility Wszystkie języki Struktura rozszerzalności używana dla rozszerzenia języka Java
mssql-server-extensibility-java Java Struktura rozszerzalności używana na potrzeby rozszerzenia języka Java i zawiera obsługiwane środowisko uruchomieniowe Języka Java

Dotyczy do: SQL Server 2019 (15.x) tylko na Linuksie

Instalowanie rozszerzenia języka Java

Aby zainstalować rozszerzenia językowe i Java na Linuksie, zainstaluj mssql-server-extensibility-java pakiet. Pakiet automatycznie instaluje JRE 11 (jeśli nie jest już zainstalowany) i dodaje ścieżkę JVM do zmiennej środowiskowej o nazwie JRE_HOME.

Aby włączyć rozszerzenie języka Java, utwórz niestandardowy plik binarny, postępując zgodnie z instrukcjami na stronie Rozszerzenia języka Java w witrynie GitHub.

Note

Na serwerze połączonym z Internetem zależności pakietów są pobierane i instalowane w ramach instalacji pakietu głównego. Jeśli serwer nie jest połączony z Internetem, zobacz więcej szczegółów w konfiguracji offline.

Możesz pobrać i zainstalować dowolny program Java runtime, w tym najnowszą wersję Microsoft Build of OpenJDK lub oficjalnie licencjonowany Java runtime. Począwszy od programu SQL Server 2022 (16.x), instalator programu SQL Server nie instaluje środowiska uruchomieniowego Języka Java.

Aby włączyć rozszerzenie języka Java, utwórz niestandardowy plik binarny, postępując zgodnie z instrukcjami na stronie Rozszerzenia języka Java w witrynie GitHub.

Polecenie instalacji Red Hat

Aby zainstalować rozszerzenia języka Java na Red Hat, użyj następującego polecenia.

Wskazówka

Jeśli to możliwe, uruchom polecenie yum clean all , aby odświeżyć pakiety w systemie przed instalacją.

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

Polecenie instalacji systemu Ubuntu

Aby zainstalować rozszerzenia językowe dla Javy na Ubuntu, użyj następującego polecenia.

Wskazówka

Jeśli to możliwe, uruchom polecenie apt-get update , aby odświeżyć pakiety w systemie przed instalacją. Niektóre obrazy Ubuntu Docker nie zawierają tego apt-transport-https pakietu. Aby go zainstalować, uruchom polecenie apt-get install apt-transport-https.

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

Polecenie instalacji systemu SUSE

Aby zainstalować rozszerzenia języka Java na SUSE, użyj następującego polecenia.

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

Konfiguracja po instalacji (wymagana)

  1. Udzielanie uprawnień w systemie Linux

    Nie musisz wykonywać tego kroku, jeśli używasz bibliotek zewnętrznych. Zalecanym rozwiązaniem są biblioteki zewnętrzne. Aby uzyskać pomoc w tworzeniu zewnętrznej biblioteki z jar pliku, zobacz CREATE EXTERNAL LIBRARY.

    Jeśli nie używasz bibliotek zewnętrznych, musisz zapewnić programowi SQL Server uprawnienia do wykonywania klas Języka Java w usłudze jar.

    Aby uzyskać dostęp jar do odczytu i wykonania pliku, wykonaj chmod następujące polecenie na pliku jar . Zawsze umieszczaj pliki jar zajęć, gdy pracujesz z SQL Server. Aby uzyskać pomoc dotyczącą tworzenia obiektu jar, zobacz Create a Java .jar file from class files (Tworzenie pliku java .jar z plików klas).

    chmod ug+rx <MyJarFile.jar>
    

    Musisz też dać mssql_satellite uprawnienia do odczytu i uruchomienia pliku jar .

    chown mssql_satellite:mssql_satellite <MyJarFile.jar>
    

    Dodatkową konfigurację wykonuje się przede wszystkim za pomocą narzędzia mssql-conf.

  2. Dodaj konto użytkownika mssql używane do uruchamiania usługi SQL Server. Ten krok jest wymagany, jeśli wcześniej nie uruchamiałeś konfiguracji.

    sudo /opt/mssql/bin/mssql-conf setup
    
  3. Włącz wychodzący dostęp sieciowy. Dostęp sieciowy wychodzący jest domyślnie wyłączony. Aby umożliwić żądania wychodzące, ustaw właściwość Boole'a outboundnetworkaccess w narzędziu mssql-conf . Aby uzyskać więcej informacji, zobacz Configure SQL Server on Linux with mssql-conf (Konfigurowanie programu SQL Server w systemie Linux przy użyciu programu mssql-conf).

    # Run as SUDO or root
    # Enable outbound requests over the network
    sudo /opt/mssql/bin/mssql-conf set extensibility outboundnetworkaccess 1
    
  4. Uruchom ponownie usługę SQL Server Launchpad oraz instancję silnika bazy danych, aby odczytać zaktualizowane wartości z pliku INI. Komunikat w CV przypomina Ci za każdym razem, gdy zmieniasz ustawienie związane z rozszerzeniem.

    systemctl restart mssql-launchpadd
    systemctl restart mssql-server.service
    
  5. Włącz wykonywanie skryptów zewnętrznych. Możesz nawiązać połączenie z wystąpieniem programu SQL Server przy użyciu dowolnego znanego narzędzia klienckiego programu SQL Server, takiego jak sqlcmd, SQL Server Management Studio (SSMS) lub rozszerzenie MSSQL dla programu Visual Studio Code.

    EXECUTE sp_configure 'external scripts enabled', 1;
    
    RECONFIGURE WITH OVERRIDE;
    
  6. Ponownie uruchom usługę mssql-launchpadd .

  7. Dla każdej bazy danych, w której chcesz używać rozszerzeń językowych, zarejestruj język zewnętrzny za pomocą .CREATE EXTERNAL LANGUAGE Zobacz kolejną sekcję, aby poznać kroki.

Rejestrowanie języka zewnętrznego

Dla każdej bazy danych, w której chcesz używać rozszerzeń językowych, zarejestruj język zewnętrzny za pomocą .CREATE EXTERNAL LANGUAGE

Poniższy przykład dodaje język zewnętrzny o nazwie Java do bazy danych w programie SQL Server w systemie Linux.

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"}'
);

W rozszerzeniu Java zmienna JRE_HOME środowiskowa określa ścieżkę do znalezienia i inicjalizacji JVM.

CREATE EXTERNAL LANGUAGE DDL dostarcza ENVIRONMENT_VARIABLES parametr do ustawiania zmiennych środowiskowych dla procesu, który hostuje rozszerzenie. Użyj tego parametru do ustawienia zmiennych środowiskowych, których wymagają zewnętrzne rozszerzenia językowe.

Aby uzyskać więcej informacji, zobacz CREATE EXTERNAL LANGUAGE.

Weryfikowanie instalacji

Integracja funkcji Java nie obejmuje bibliotek, ale możesz uruchomić uruchomieniegrep -r JRE_HOME /etc, aby potwierdzić JRE_HOME istnienie zmiennej środowiskowej.

Aby zweryfikować instalację, uruchom skrypt języka T-SQL, który wykonuje systemową procedurę składowaną wywołującą język Java. Do tego zadania potrzebne jest narzędzie do wykonywania zapytań. Możesz nawiązać połączenie z wystąpieniem programu SQL Server przy użyciu dowolnego znanego narzędzia klienckiego programu SQL Server, takiego jak sqlcmd, SQL Server Management Studio (SSMS) lub rozszerzenie MSSQL dla programu Visual Studio Code.

Pełna instalacja programu SQL Server i rozszerzenia języka Java

Aby zainstalować i skonfigurować Database Engine oraz rozszerzenie języka Java w jednej procedurze, należy dodać pakiety i parametry Java do polecenia instalującego Database Engine.

  1. Podaj wiersz polecenia zawierający aparat bazy danych oraz funkcje rozszerzenia języka.

    Następujące polecenie dodaje rozszerzalność Java do instalacji Database Engine.

    sudo yum install -y mssql-server mssql-server-extensibility-java
    
  2. Zaakceptuj umowy licencyjne i ukończ konfigurację po instalacji. Użyj narzędzia mssql-conf .

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

    W tym kroku zostanie wyświetlony monit o zaakceptowanie umowy licencyjnej silnika baz danych, wybranie wersji i ustawienie hasła administratora.

  3. Zrestartuj usługę, jeśli zostanie o to poproszony.

    sudo systemctl restart mssql-server.service
    

Instalacja nienadzorowana

Użyj instalacji nienadzorowanej dla silnika bazy danych i dodaj pakiety dla mssql-server-extensibility-java.

Instalacja w trybie offline

Aby zainstalować pakiety, należy postępować zgodnie z instrukcjami instalacji offline . Znajdź swoją stronę do pobrania, a następnie pobierz konkretne pakiety wymienione później w tej sekcji.

Wskazówka

Kilka narzędzi do zarządzania pakietami oferuje polecenia, które pomagają określić zależności pakietów. Dla yum użyj sudo yum deplist [package]. W przypadku systemu Ubuntu użyj polecenia sudo apt-get install --reinstall --download-only [package name] , a następnie dpkg -I [package name].deb.

Pobierz witrynę

Pobierz pakiety z .https://packages.microsoft.com/ Strona zawiera wszystkie pakiety Java wraz z pakietem Database Engine.

Ścieżki pobierania

Package Distribution Lokalizacja pobierania
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/

Lista pakietów

W zależności od rozszerzeń, których chcesz użyć, pobierz pakiety niezbędne dla określonego języka. Dokładne nazwy plików zawierają informacje o platformie w sufiksie, ale poniższe nazwy plików pomagają określić, które pliki pobrać.

  • Pakiety podstawowe

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

    • mssql-server-extensibility-java-15.0.1000

Ograniczenia

Domniemane uwierzytelnianie nie jest dostępne na Linuksie. Kod Java działający w procesie zewnętrznym nie może połączyć się z serwerem, aby uzyskać dostęp do danych lub innych zasobów.

Nadzór nad zasobami

Linux i Windows mają parytet zarządzania zasobami dla zewnętrznych pul zasobów, ale statystyki dla sys.dm_resource_governor_external_resource_pools obecnie pokazują różne jednostki na Linuksie.

Note

Statystyki w poniższej tabeli pochodzą z określonych podsystemów Control Groups (cgroups).

Nazwa kolumny Description Wartość w systemie Linux
peak_memory_kb Maksymalna ilość pamięci używanej przez pulę zasobów. W systemie Linux ta statystyka jest pozyskiwana z podsystemu memory , gdzie wartość jest memory.max_usage_in_bytes
write_io_count Łączna liczba zapisów IO wydanych od ostatniego resetu statystyk Resource Governor. W systemie Linux ta statystyka jest pozyskiwana z podsystemu blkio , gdzie wartość w wierszu zapisu jest blkio.throttle.io_serviced
read_io_count Łączna liczba odczytów IO wydanych od ostatniego resetu statystyk Resource Governor. Na Linuksie ta statystyka pochodzi z podsystemu blkio , gdzie wartość wiersza odczytu to blkio.throttle.io_serviced
total_cpu_kernel_ms Skumulowany czas działania użytkownika CPU w milisekundach od ostatniego resetu statystyk Resource Governor. W systemie Linux ta statystyka jest pozyskiwana z podsystemu cpuacct , gdzie wartość w wierszu użytkownika jest cpuacct.stat
total_cpu_user_ms Skumulowany czas użytkownika CPU w milisekundach od ostatniego resetu statystyk Resource Governor. Na Linuksie ta statystyka pochodzi z podsystemu cpuacct , gdzie wartość w wierszu systemu jest cpuacct.stat
active_processes_count Liczba procesów zewnętrznych uruchomionych w momencie żądania. W systemie Linux ta statystyka jest pozyskiwana z podsystemu pids , gdzie wartość jest pids.current