Установка расширения языка 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, хотя их можно добавить постепенно в существующий экземпляр.

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

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

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

Внимание

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

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
    RTM SQL Server 2019 (15.x) — 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 Машинное обучение Services (Python и R) в Windows.

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

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

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

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

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

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

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

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

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

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

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

  2. Если после завершения установки будет предложено перезагрузить компьютер, выполните перезагрузку. Важно прочитать сообщение мастера установки после завершения установки. Дополнительные сведения см. в разделе View and Read SQL Server Setup Log Files.

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

    2. С помощью Azure Data Studio подключитесь к своему экземпляру 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 в программных файлах, выполните следующие действия.

Выполните команды 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.

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

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

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

    EXEC sp_configure;
    

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

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

    EXEC sp_configure 'external scripts enabled', 1
    GO
    RECONFIGURE WITH OVERRIDE
    

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

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

Для каждой базы данных, в которой необходимо использовать расширения языка, зарегистрируйте внешний язык с помощью команды 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.

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

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

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

  1. Откройте новое окно запроса в SQL Server Management Studio или Azure Data Studio и выполните приведенную следующую инструкцию:

    EXEC sp_configure 'external scripts enabled';
    

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

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

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

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

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

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

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

Примечание.

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

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

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

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

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

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

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

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

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