Установка расширения языка Java для SQL Server в Linux

Область применения: SQL Server 2019 (15.x) — Linux и более поздних версий

Узнайте, как установить компонент расширения языка Java для SQL Server в Linux. Расширение языка Java является частью расширений языка SQL Server и надстройкой для ядро СУБД.

Хотя вы можете одновременно установить ядро СУБД и языковые расширения, рекомендуется установить и настроить ядро СУБД SQL Server, чтобы устранить любые проблемы перед добавлением дополнительных компонентов.

Необходимые компоненты

  • Версия Linux должна поддерживаться SQL Server, но не включает подсистему Docker. Поддерживаемые версии

  • У вас должен быть инструмент для выполнения команд Transact-SQL (T-SQL). Редактор запросов необходим для настройки и проверки после установки. Рекомендуется использовать бесплатное решение Azure Data Studio, работающее в Linux.

  • Пакет расширений Java находится в репозиториях исходного кода SQL Server для Linux. Если вы уже настроили исходные репозитории для установки ядро СУБД, можно запустить mssql-server-extensibility-java команды установки пакета с помощью той же регистрации репозитория.

Список пакетов

На подключенном к Интернету устройстве пакеты загружаются и устанавливаются независимо от ядро СУБД с помощью установщика пакетов для каждой операционной системы. В таблице ниже содержится описание доступных пакетов.

Имя пакета Область действия Description
mssql-server-extensibility Все языки Платформа расширяемости, используемая для расширения языка Java.
mssql-server-extensibility-java Java Применимо: ТОЛЬКО SQL Server 2019 (15.x) в Linux

Платформа расширяемости, которая используется для расширения языка Java и включает среду выполнения Java.

Установка расширения языка Java

Вы можете установить расширения языка и Java в Linux, установив mssql-server-extensibility-javaего. При установке mssql-server-extensibility-javaпакет автоматически устанавливает JRE 11, если он еще не установлен. Он также добавляет путь JVM к переменной среды, называемой JRE_HOME.

Чтобы включить расширение языка Java, создайте пользовательский двоичный файл, следуя инструкциям на странице расширения языка Java на GitHub.

Примечание.

На сервере, подключенном к Интернету, зависимости пакета скачиваются и устанавливаются в рамках установки основного пакета. Если сервер не подключен к Интернету, см. дополнительные сведения в автономной настройке.

Вы можете скачать и установить любую среду выполнения Java, включая последнюю версию Microsoft Build OpenJDK или официальную лицензированную среду выполнения Java. Начиная с SQL Server 2022 (16.x), программа установки SQL Server не устанавливает среду выполнения Java.

Чтобы включить расширение языка Java, создайте пользовательский двоичный файл, следуя инструкциям на странице расширения языка Java на GitHub.

Команда установки Red Hat

Расширения языка для Java можно установить в Red Hat с помощью следующей команды.

Совет

По возможности запустите yum clean all, чтобы обновить пакеты в системе перед установкой.

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

Команда установки для Ubuntu

Расширения языка для Java можно установить в Ubuntu с помощью следующей команды.

Совет

По возможности запустите apt-get update, чтобы обновить пакеты в системе перед установкой. Кроме того, некоторые образы Docker в Ubuntu могут не иметь варианта транспорта apt https. Чтобы установить его, используйте apt-get install apt-transport-https.

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

Команда установки для SUSE

Расширения языка для Java можно установить в SUSE с помощью следующей команды.

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

Настройка после установки (обязательно)

  1. Предоставление разрешений в Linux

    Этот шаг не требуется выполнять, если вы используете внешние библиотеки. Рекомендуемый способ работы — использование внешних библиотек. Справку по созданию внешней библиотеки из jar файла см. в статье CREATE EXTERNAL LIBRARY

    Если вы не используете внешние библиотеки, необходимо предоставить SQL Server разрешения на выполнение классов Java в вашем.jar

    Чтобы предоставить доступ к jar файлу для чтения и выполнения, выполните следующую команду chmod в jar файле. При работе с SQL Server мы рекомендуем всегда помещает файлы класса в jar файл класса. Сведения о создании jarjar-файла Java см. в статье "Создание jar-файла Java" из файлов классов.

    chmod ug+rx <MyJarFile.jar>
    

    Вам также нужно предоставить mssql_satellite разрешения jar на чтение и выполнение файла.

    chown mssql_satellite:mssql_satellite <MyJarFile.jar>
    

    Дополнительная настройка осуществляется в основном с помощью средства mssql-conf.

  2. Добавьте учетную запись пользователя, используемую mssql для запуска службы SQL Server. Это необходимо, если вы не выполняли установку ранее.

    sudo /opt/mssql/bin/mssql-conf setup
    
  3. Включите исходящий сетевой доступ. По умолчанию исходящий сетевой доступ отключен. Чтобы включить исходящие запросы, задайте outboundnetworkaccess логическое свойство с помощью средства mssql-conf . Дополнительные сведения см. в статье Настройка SQL Server на Linux с помощью средства mssql-conf.

    # 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 или другого средства, например SQL Server Management Studio (только Для Windows), который запускает T-SQL.

    EXEC sp_configure 'external scripts enabled', 1;
    RECONFIGURE WITH OVERRIDE;
    
  6. Снова перезапустите службу mssql-launchpadd.

  7. Для каждой базы данных, в которой необходимо использовать расширения языка, зарегистрируйте внешний язык с помощью команды CREATE EXTERNAL LANGUAGE. Инструкции приведены в следующем разделе.

Регистрация внешнего языка

Для каждой базы данных, в которой необходимо использовать расширения языка, зарегистрируйте внешний язык с помощью команды CREATE EXTERNAL LANGUAGE.

Следующий пример добавляет внешний язык Java в базу данных на сервере SQL Server на 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"}');

Для расширения Java используется переменная среды JRE_HOME для определения пути поиска и инициализации виртуальной машины Java.

CREATE EXTERNAL LANGUAGE DDL предоставляет параметр (ENVIRONMENT_VARIABLES), чтобы задать переменные среды специально для процесса размещения расширения. Этот процесс является рекомендуемой и наиболее эффективной способом задания переменных среды, необходимых расширениям внешнего языка.

Дополнительные сведения см. в разделе CREATE EXTERNAL LANGUAGE.

Проверка установки

Интеграция функций Java не включает библиотеки, но можно запустить grep -r JRE_HOME /etc для подтверждения создания переменной JAVA_HOME среды.

Чтобы проверить установку, запустите скрипт T-SQL, который выполняет системную хранимую процедуру, вызывающую Java. Для этой задачи необходим инструмент запроса. Хорошим выбором станет 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 используйте sudo apt-get install --reinstall --download-only [package name], а затем dpkg -I [package name].deb.

Сайт загрузки

Пакеты можно скачать по адресу https://packages.microsoft.com/. Все пакеты для Java размещаются вместе с пакетом ядро СУБД.

Путь к скачиванию

Пакет Распределение Расположение для скачивания
mssql/extensibility-java packages Red Hat 8 https://packages.microsoft.com/rhel/8/mssql-server-2019/
mssql/extensibility-java packages SUSE версии 15 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 для управления ресурсами для внешних пулов ресурсов, но статистика для 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. В Linux эта статистика создается из blkio подсистемы, где значение строки записи имеет значение. blkio.throttle.io_serviced
read_io_count Общее число выполненных операций ввода-вывода чтения с момента сброса статистики Resource Governor. В Linux эта статистика создается из blkio подсистемы, где значение в строке чтения blkio.throttle.io_serviced
total_cpu_kernel_ms Совокупное время ядра использования ЦП, в миллисекундах, с момента сброса статистики Resource Governor. В Linux эта статистика создается из cpuacct подсистемы, где значение в строке пользователя находится cpuacct.stat
total_cpu_user_ms Совокупное время использования ЦП, в миллисекундах, с момента сброса статистики Resource Governor. В Linux эта статистика создается из cpuacct подсистемы, где значение в системной строке имеет значение. cpuacct.stat
active_processes_count Количество внешних процессов, выполняемых в момент запроса. В Linux эта статистика создается из pids подсистемы, где значение равно pids.current