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

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

Узнайте, как установить компонент расширения языка Java для SQL Server в Windows. Расширение языка Java входит в состав пакета расширений языков для SQL Server.

Примечание.

Эта статья предназначена для установки расширения языка Java для SQL Server в Windows. Инструкции по установке в Linux см. в статье Установка расширения языка Java для SQL Server в Linux. Расширение языка C# в Windows см. в разделе "Установка расширения языка SQL Server .NET" в Windows.

Предварительные требования

Примечание.

Возможности компонентов и параметры установки зависят от версии SQL Server. Используйте раскрывающийся список селектора версий, чтобы выбрать соответствующую версию SQL Server.

  • Для установки поддержки расширения языка Java требуется установка SQL Server.

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

  • Требуется экземпляр ядра СУБД. Вы не можете установить только функции расширения языка Java, хотя их можно добавить постепенно в существующий экземпляр.

  • Для обеспечения непрерывности бизнеса для расширений языка поддерживаются группы доступности Always On. Необходимо установить расширения языка и настроить пакеты на каждом узле. Установка расширения языка Java также поддерживается для экземпляра отказоустойчивого кластера в SQL Server.

  • Не устанавливайте расширения языка SQL Server или расширение языка Java на контроллере домена. Не удается выполнить установку расширений языка.

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

Внимание

После завершения установки обязательно выполните действия после конфигурации, описанные в этой статье. Эти действия включают включение поддержки внешнего кода в SQL Server и добавление учетных записей, необходимых для выполнения SQL Server кода Java от вашего имени. Изменения в конфигурации обычно требуют перезапуска экземпляра или службы Launchpad.

Java JRE или JDK

Примечание.

Возможности компонентов и параметры установки зависят от версии SQL Server. Используйте раскрывающийся список селектора версий, чтобы выбрать соответствующую версию SQL Server.

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

В настоящее время в Windows поддерживается версия Java 11. Среда выполнения Java (JRE) является минимальным требованием, но если нужно использовать компилятор Java и пакеты разработки, вам пригодится пакет Java Development Kit (JDK). Поскольку JDK включает в себя всё необходимое, при установке JDK JRE не требуется. В Windows рекомендуется по возможности устанавливать JDK в папку /Program Files/ по умолчанию. В противном случае для предоставления разрешений исполняемым файлам потребуются дополнительные настройки. Дополнительные сведения см. в разделе о предоставлении разрешений (Windows) в этом документе.

Существует два способа установки и использования Java с SQL Server 2019 (15.x) и более поздних версий:

  1. Используйте среду выполнения Java по умолчанию, которая включена в установку SQL Server.

    В следующей таблице перечислены версии Java по умолчанию, включенные в программу установки:

    Версия SQL Server Версия Java по умолчанию
    SQL Server 2019 (15.x) CU 23 и более поздние версии Microsoft Build of OpenJDK 11.0.19
    SQL Server 2019 (15.x) RTM - CU22 Azul Zulu JRE 11.0.3
  2. Использование предпочтительного дистрибутива Java вместо среды выполнения Java по умолчанию.

    В настоящее время в Windows поддерживается версия Java 11. Среда выполнения Java (JRE) является минимальным требованием, но если нужно использовать компилятор Java и пакеты разработки, вам пригодится пакет Java Development Kit (JDK). Поскольку JDK включает в себя всё необходимое, при установке JDK JRE не требуется. В Windows рекомендуется по возможности устанавливать JDK в папку /Program Files/ по умолчанию. В противном случае для предоставления разрешений исполняемым файлам потребуются дополнительные настройки. Дополнительные сведения см. в разделе о предоставлении разрешений (Windows) в этом документе.

Примечание.

Учитывая обратную совместимость Java, более ранние версии могут работать, но поддерживаемая и проверенная версия для SQL Server 2019 (15.x) — Java 11.

Получение установочного носителя

Расположение скачивания для SQL Server зависит от выпуска:

Запуск программы установки

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

  1. Запустите мастер установки SQL Server.

  2. На вкладке Установка выберите параметр Новая установка изолированного экземпляра SQL Server или добавление компонентов к существующей установке.

  1. На странице Выбор компонентов выберите следующие компоненты:

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

    Службы машинного обучения и расширения языка. Этот параметр устанавливает компонент расширений языка, поддерживающий выполнение кода Java.

    • Если вы хотите установить среду выполнения Java по умолчанию, выберите Службы машинного обучения и языковые расширения и Java.

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

    • Если вы хотите использовать R и Python, см. статью Установка служб машинного обучения SQL Server (Python и R) в ОС Windows.

    Снимок экрана: параметры возможностей для расширений языка.

    1. Если на предыдущем шаге выбрать Java для установки среды выполнения Java по умолчанию, отобразится страница Расположение установки Java.

      Установите java по умолчанию, включенную в эту установку. Параметр "Указать расположение другой версии, установленной на этом компьютере", не используется для расширений языка.

      Снимок экрана: расположение установки Java.

  1. На странице Выбор компонентов выберите следующие компоненты:

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

    Службы машинного обучения и расширения языка. Этот параметр устанавливает компонент расширений языка, поддерживающий выполнение кода Java.

    Скриншот функций экземпляра.

  1. На странице Все готово для установки проверьте, включены ли указанные ниже компоненты, и нажмите Установить.

    • Службы ядра СУБД
    • Службы машинного обучения и расширения языка

    Обратите внимание на расположение папки в каталоге ..\Setup Bootstrap\Log, где хранятся файлы конфигурации. После завершения установки можно просмотреть установленные компоненты в файле сводки.

  2. Если после завершения установки будет предложено перезагрузить компьютер, выполните перезагрузку. Важно прочитать сообщение мастера установки после завершения установки. Дополнительные сведения см. в разделе "Просмотр и чтение файлов журнала установки SQL Server".

Добавление переменной JRE_HOME

JRE_HOME — это системная переменная среды, указывающая расположение интерпретатора Java. В этом шаге создайте в Windows системную переменную среды.

  1. Найдите и скопируйте путь к домашнему каталогу JRE.

    Например, путь к домашнему каталогу JRE для среды выполнения Java Zulu JRE 11.0.3 по умолчанию — %ProgramFiles%\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Binn\AZUL-OpenJDK-JRE\.

    В зависимости от пути установки SQL Server или если вы выбрали другую среду выполнения Java, расположение JDK или JRE может отличаться от пути в предыдущем примере. Даже если у вас установлен JDK, в составе этой установки часто присутствует подпапка JRE, поэтому в таком случае укажите папку JRE. Расширение Java пытается загрузить jvm.dll по пути %JRE_HOME%\bin\server.

  1. Найдите и скопируйте путь к домашнему каталогу JRE.

    Этот путь зависит от среды выполнения и параметров установки.

    Расширение для Java пытается загрузить jvm.dll по пути %JRE_HOME%\bin\server.

  1. На панели управления выберите пункт Система и безопасность и Система, а затем щелкните Дополнительные свойства системы.

  2. Выберите Переменные среды.

  3. Создайте новую системную переменную для JRE_HOME, указав в качестве ее значения путь к JDK/JRE (указанный в шаге 1).

  1. Перезапустите Панель запуска.

    1. Откройте Диспетчер конфигурации SQL Server.

    2. В разделе "Службы SQL Server" щелкните "Панель запуска SQL Server" правой кнопкой мыши и выберите параметр Перезапустить.

  1. Зарегистрируйте расширение языка. Выполните описанные ниже действия, чтобы скачать и зарегистрировать расширение языка Java, которое используется для настраиваемой среды выполнения Java.

    1. Скачайте файл java-lang-extension-windows-release.zip из репозитория GitHub расширения языка Java для SQL Server. Скачайте последнюю версию файла java-lang-extension-windows.zip для Windows. Если вы не установили java по умолчанию из программы установки SQL Server, убедитесь, что версия JRE соответствует той, которая загружена из GitHub. Если вы предпочитаете использовать собственную установленную версию JRE, может потребоваться скомпилировать java-lang-extension из исходного кода GitHub.

    2. Используйте расширение MSSQL для Visual Studio Code для подключения к экземпляру SQL Server и выполните следующую команду T-SQL, чтобы зарегистрировать расширение языка Java в CREATE EXTERNAL LANGUAGE.

    3. Измените путь в этой инструкции таким образом, чтобы он указывал расположение скачанного ZIP-файла с расширением языка (java-lang-extension-windows-release.zip) и ваше пользовательское место установки Java (%ProgramFiles%\Python).

    CREATE EXTERNAL LANGUAGE [Java]
    FROM (CONTENT = N'C:\path\to\java-lang-extension-windows-release.zip',
        FILE_NAME = 'javaextension.dll',
        ENVIRONMENT_VARIABLES = N'{"JAVAHOME": "C:\\Program Files\\Java"}');
    GO
    
  2. Перезапустите Панель запуска.

    1. Откройте Диспетчер конфигурации SQL Server.

    2. В разделе "Службы SQL Server" щелкните "Панель запуска SQL Server" правой кнопкой мыши и выберите параметр Перезапустить.

Предоставление доступа к папке JRE, отличной от используемой по умолчанию

Если вы не установили Java по умолчанию, входившую в состав SQL Server, и не установили Java в каталоге /Program Files, необходимо выполнить следующие действия.

Если вы не установили Java в папку «Program Files», выполните следующие действия.

Выполните команды icacls в командной строке с повышенными привилегиями, чтобы предоставить доступ к SQLRUsergroup и учетным записям служб SQL Server (в ALL_APPLICATION_PACKAGES) для доступа к JRE. Команды рекурсивно предоставляют доступ ко всем файлам и папкам в заданном пути к каталогу.

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

    Для именованного экземпляра добавьте имя экземпляра в sqlRUsergroup (например, SQLRUsergroupINSTANCENAME).

    icacls "<PATH to JRE>" /grant "SQLRUsergroup":(OI)(CI)RX /T
    

    Этот шаг можно пропустить, если вы установили JDK/JRE в папку по умолчанию в каталоге Program Files в Windows.

  2. Предоставьте разрешения AppContainer. Эта команда предоставляет разрешения на идентификатор безопасности S-1-15-2-1компьютера, который эквивалентен ALL APPLICATION PACKAGES английской версии Windows. Кроме того, можно использовать icacls "<PATH to JRE>" /grant "ALL APPLICATION PACKAGES":(OI)(CI)RX /T в английской версии Windows.

    icacls "<PATH to JRE>" /grant *S-1-15-2-1:(OI)(CI)RX /T
    

Перезапустить службу

После завершения установки перезапустите ядро СУБД перед продолжением следующего шага, включив выполнение скрипта.

При перезапуске службы автоматически перезапускается соответствующая служба Панель запуска SQL Server.

Вы можете перезапустить службу с помощью команды контекстного меню Restart для экземпляра в SSMS, с помощью панели Службы в Панели управления или с помощью Диспетчера конфигурации SQL Server.

Включение выполнения сценария

  1. Откройте SQL Server Management Studio. Подключитесь к экземпляру, в который вы установили расширения языка, выберите Создать запрос, чтобы открыть окно запроса, и выполните следующую команду:

    EXECUTE sp_configure;
    

    По умолчанию эта функция отключена (value отключена 0) и должна быть явно включена администратором, прежде чем вы сможете запускать код Java.

  2. Чтобы включить внешний компонент написания сценариев, выполните следующую инструкцию:

    EXECUTE sp_configure 'external scripts enabled', 1;
    GO
    
    RECONFIGURE WITH OVERRIDE;
    GO
    

    Если вы уже включили функцию для служб Машинное обучение, не выполняйте повторную настройку для расширений языка. Базовая платформа расширяемости поддерживает и те, и другие.

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

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

Следующий пример добавляет внешний язык Java в базу данных на сервере SQL Server в Windows.

CREATE EXTERNAL LANGUAGE Java
FROM (CONTENT = N'<path-to-zip>', FILE_NAME = 'javaextension.dll');
GO

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

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

Проверьте состояние установки экземпляра в журналах установки.

Выполните указанные ниже действия, чтобы убедиться в том, что все компоненты, используемые для запуска внешнего скрипта, запущены.

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

  1. Подключитесь к клиенту базы данных и выполните следующую инструкцию:

    EXECUTE sp_configure 'external scripts enabled';
    

    Теперь для run_value задано значение 1.

  2. Откройте раздел Службы или диспетчер конфигурации SQL Server и убедитесь, что служба Панель запуска SQL Server запущена. Для каждого экземпляра ядра СУБД, для которого установлены языковые расширения, должна быть одна служба. Дополнительные сведения о службе см. в разделе "Архитектура расширяемости" в расширениях языка SQL Server.

Дополнительная настройка

Если шаг проверки выполнен успешно, можно запустить код Java от любого клиента, который может отправлять инструкции T-SQL на сервер.

Если при выполнении команды возникнет ошибка, обратитесь к дополнительным шагам настройки, указанным в этом разделе. Возможно, потребуется внести дополнительные конфигурации в службу или базу данных.

На уровне экземпляра дополнительные параметры конфигурации могут включать:

В базе данных могут потребоваться следующие обновления конфигурации:

Примечание.

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

Предлагаемые оптимизации

Теперь, когда все работает, также может потребоваться оптимизировать сервер для поддержки расширения языка Java.

Оптимизация сервера для расширения языка Java

Параметры по умолчанию для установки SQL Server предназначены для оптимизации баланса сервера для различных служб, поддерживаемых ядро СУБД, которые могут включать процессы извлечения, преобразования и загрузки (ETL), отчетов, аудита и приложений, использующих данные SQL Server. В связи с этим при использовании параметров по умолчанию ресурсы для расширений языка могут быть ограничены или регулироваться, особенно в случае с операциями с интенсивным использованием памяти.

Чтобы задачам расширений языка назначались соответствующие приоритеты и выделялись необходимые ресурсы, рекомендуем использовать Resource Governor SQL Server для настройки внешнего пула ресурсов. Вы также можете изменить объем памяти, выделяемой для ядра СУБД, или увеличить количество учетных записей, от имени которых запускается служба SQL Server Launchpad.

Если вы используете выпуск Standard и не имеете регулятора ресурсов, вы можете использовать динамические административные представления и расширенные события, а также мониторинг событий Windows для управления ресурсами сервера.

Следующий шаг

Разработчики на языке Java могут ознакомиться с простыми примерами, а также узнать, как код Java работает с SQL Server. Сведения о следующем шаге см. по ссылке: