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

Применимо к: SQL Server 2019 (15.x) в Linux и более поздних версиях

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

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

Prerequisites

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

  • Расширения языка и службы машинного обучения устанавливаются по умолчанию в кластерах больших данных SQL Server. Если вы используете Кластеры больших данных, вам не нужно выполнять действия, описанные в этой статье.

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

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

Имя пакета Применимо к Description
mssql-server-extensibility Все языки Платформа расширяемости, используемая для расширения языка Java.
mssql-server-extensibility-java Java Платформа расширяемости, которая используется для расширения языка Java и включает среду выполнения Java.

Относится к: SQL Server 2019 (15.x) только на Linux

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

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

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

Note

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

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

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

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

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

Tip

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

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

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

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

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

Чтобы установить расширения языка для 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 . Всегда размещайте файлы классов в Ajar, когда работаете с SQL Server. Дополнительные сведения о создании jarфайла java .jar см. в разделе "Создание файла .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. Включите выполнение внешнего скрипта. Вы можете подключиться к экземпляру SQL Server с помощью любого знакомого клиентского средства SQL Server, например sqlcmd, SQL Server Management Studio (SSMS) или расширения MSSQL для Visual Studio Code.

    EXECUTE 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 среды определяет путь для поиска и инициализации JVM.

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

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

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

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

Чтобы проверить установку, запустите скрипт T-SQL, который выполняет системную хранимую процедуру, вызывающую Java. Для этой задачи необходим инструмент запроса. Вы можете подключиться к экземпляру SQL Server с помощью любого знакомого клиентского средства SQL Server, например sqlcmd, SQL Server Management Studio (SSMS) или расширения MSSQL для Visual Studio Code.

Полная установка 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.

Автономная установка

Чтобы установить пакеты, следуйте инструкциям по установке Offline . Найдите свой сайт для скачивания, а затем скачайте конкретные пакеты, перечисленные позже в этом разделе.

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 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.

Note

Статистика в следующей таблице взята из указанных подсистем контрольных групп (cgroups).

Название столбца Description Значение в Linux
peak_memory_kb Максимальная память, которую использует пул ресурсов. В Linux эта статистика создается из memory подсистемы, где значение равно memory.max_usage_in_bytes
write_io_count Общее количество IO, выпущенных с момента последнего сброса статистики Resource Governor. В Linux эта статистика получается из blkio подсистемы, где значение на строке записи составляет blkio.throttle.io_serviced.
read_io_count Общее количество IO, выпущенных с момента последнего сброса статистики Resource Governor. В Linux эта статистика взята из blkio подсистемы, где значение в строке чтения равно blkio.throttle.io_serviced
total_cpu_kernel_ms Накопленное время ядра пользователя CPU в миллисекундах с момента последнего сброса статистики Resource Governor. В Linux эта статистика создается из cpuacct подсистемы, где значение в строке пользователя находится cpuacct.stat
total_cpu_user_ms Совокупное пользовательское время процессора в миллисекундах с момента последнего сброса статистики Resource Governor. В Linux эта статистика взята из подсистемы cpuacct , где значение в системной строке равно cpuacct.stat
active_processes_count Количество внешних процессов, выполняемых в момент запроса. В Linux эта статистика создается из pids подсистемы, где значение равно pids.current