Установка настраиваемой среды выполнения Python для SQL Server

Область применения: SQL Server 2019 (15.x)

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

  • Windows
  • Ubuntu Linux
  • Red Hat Enterprise Linux (RHEL)
  • SUSE Linux Enterprise Server (SLES)

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

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

Начиная с SQL Server 2022 (16.x), среды выполнения для R, Python и Java больше не устанавливаются с помощью программы установки SQL. Желаемые пользовательские среды и пакеты Python необходимо устанавливать самостоятельно. Дополнительные сведения см. в разделе Установка Служб машинного обучения SQL Server 2022 (Python и R) в Windows или Установка Служб машинного обучения SQL Server (Python и R) в Linux.

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

Перед установкой настраиваемой среды выполнения Python установите указанные ниже компоненты.

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

Примечание.

Если в SQL Server 2019 установлены Службы машинного обучения, значит, расширения языка уже установлены и этот шаг можно пропустить.

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

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

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

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

    • Службы ядра СУБД

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

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

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

      Установка расширений языка для SQL Server 2019.

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

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

Внимание

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

установите Python;

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

  1. Скачайте Python 3.7 для Windows и запустите программу установки на сервере.

  2. Выберите Добавить Python 3.7 в переменную PATH, а затем выберите Настроить установку.

    Установка Python 3.7 —

  3. В разделе Дополнительные компоненты оставьте значения по умолчанию и нажмите кнопку Далее.

  4. Выберите параметр Установить для всех пользователей и запишите место установки.

    Установка Python 3.7 —

  5. Выберите Установить.

Установка Pandas

Установите пакет pandas для Python из командной строки с повышенными привилегиями (запуск от имени администратора):

python.exe -m pip install pandas

Предоставление доступа к папке Python

Выполните приведенные ниже команды icacls из нового окна командной строки с повышенными привилегиями, чтобы предоставить разрешения на доступ для чтения и выполнения к папке установки Python для службы "Панель запуска SQL Server" и идентификатора безопасности S-1-15-2-1 (ALL_APPLICATION_PACKAGES).

В приведенных ниже примерах используется расположение установки Python C:\Program Files\Python37. Если у вас другое расположение, измените его в команде.

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

    icacls "C:\Program Files\Python37" /grant "NT Service\MSSQLLAUNCHPAD":(OI)(CI)RX /T
    

    Для именованного экземпляра с именем SQL01 используется команда icacls "C:\Program Files\Python37" /grant "NT Service\MSSQLLAUNCHPAD$SQL01":(OI)(CI)RX /T.

  2. Предоставьте разрешения идентификатору безопасности S-1-15-2-1.

    icacls "C:\Program Files\Python37" /grant *S-1-15-2-1:(OI)(CI)RX /T
    

    Приведенная выше команда предоставляет разрешения идентификатору безопасности компьютера S-1-15-2-1, что эквивалентно разрешению ALL APPLICATION PACKAGES (Все пакеты приложений) в английской версии Windows. Кроме того, можно использовать icacls "C:\Program Files\Python37" /grant "ALL APPLICATION PACKAGES":(OI)(CI)RX /T в английской версии Windows.

Перезапуск панели запуска SQL Server

Выполните описанные ниже действия, чтобы перезапустить службу "Панель запуска SQL Server".

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

  2. В разделе "Службы SQL Server" щелкните правой кнопкой мыши панель запуска SQL Server (MSSQLSERVER) и выберите "Перезапустить". Если используется именованный экземпляр, вместо (MSSQLSERVER) будет отображаться имя этого экземпляра.

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

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

  1. Скачайте файл python-lang-extension-windows-release.zip из репозитория GitHub для расширений языка SQL Server.

    Для среды разработки или тестирования также можно использовать отладочную версию (python-lang-extension-windows-debug.zip). Отладочная версия сохраняет в журнал подробные сведения, которые помогают изучать ошибки, и не рекомендуется для рабочих сред.

  2. С помощью Azure Data Studio подключитесь к экземпляру SQL Server и выполните приведенную ниже команду T-SQL, чтобы зарегистрировать расширение языка Python с помощью инструкции CREATE EXTERNAL LANGUAGE.

    Измените путь в этой инструкции таким образом, чтобы он указывал расположение скачанного ZIP-файла с расширением языка (python-lang-extension-windows-release.zip) и место установки Python (C:\\Program Files\\Python37).

    CREATE EXTERNAL LANGUAGE [myPython]
    FROM (CONTENT = N'C:\path\to\python-lang-extension-windows-release.zip', 
        FILE_NAME = 'pythonextension.dll', 
        ENVIRONMENT_VARIABLES = N'{"PYTHONHOME": "C:\\Program Files\\Python37"}');
    GO
    

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

    Примечание.

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

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

Перед установкой настраиваемой среды выполнения Python установите указанные ниже компоненты.

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

Примечание.

Если в SQL Server 2019 установлены Службы машинного обучения, значит, пакет mssql-server-extensibility для расширений языка уже установлен и этот шаг можно пропустить.

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

  1. Если возможно, перед установкой выполните эту команду для обновления пакетов в системе.

    # Install as root or sudo
    sudo apt-get update
    
  2. Ubuntu может не иметь параметр https apt transport. Чтобы установить его, выполните приведенную ниже команду.

    # Install as root or sudo
    apt-get install apt-transport-https
    
  3. Установите mssql-server-extensibility с помощью этой команды.

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

Установка Python 3.7 и Pandas

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

  1. Чтобы установить Python 3.7, выполните приведенные ниже команды.

    # Install python3.7 and the corresponding library:
    sudo add-apt-repository ppa:deadsnakes/ppa
    sudo apt-get update
    sudo apt-get install python3.7 python3-pip libpython3.7
    
  2. Чтобы установить пакет pandas, выполните приведенную ниже команду.

    # Install pandas to /usr/lib:
    sudo python3.7 -m pip install pandas -t /usr/lib/python3.7/dist-packages
    

Настраиваемая установка Python

Примечание.

Если вы установили Python 3.7 в расположение /usr/lib/python3.7 по умолчанию, этот раздел можно пропустить и сразу перейти к разделу Регистрация расширения языка.

Если вы скомпилировали собственную версию Python 3.7, выполните приведенные ниже команды, чтобы сообщить SQL Server о настраиваемой установке.

Добавление переменной среды

Измените службу mssql-launchpadd, добавив переменную среды PYTHONHOME в файл /etc/systemd/system/mssql-launchpadd.service.d/override.conf.

  1. Откройте файл с помощью systemctl.

    sudo systemctl edit mssql-launchpadd
    
  2. Вставьте следующий текст в открывающийся файл /etc/systemd/system/mssql-launchpadd.service.d/override.conf. Установите значение параметра PYTHONHOME в соответствии с путем установки настраиваемой версии Python.

    [Service]
    Environment="PYTHONHOME=<path to the python3.7 lib>"
    
  3. Сохраните файл и закройте редактор.

Убедитесь, что удается загрузить libpython3.7m.so.1.0.

  1. Создайте файл custom-python.conf в /etc/ld.so.conf.d.

    sudo vi /etc/ld.so.conf.d/custom-python.conf
    
  2. В открывшийся файл добавьте путь к libpython3.7m.so.1.0 из настраиваемой установки Python.

    <path to the python3.7 lib>
    
  3. Сохраните новый файл и закройте редактор.

  4. Запустите ldconfig и убедитесь, что можно загрузить libpython3.7m.so.1.0, выполнив следующую команду и проверив наличие всех зависимых библиотек.

    sudo ldconfig
    ldd <path to the python3.7 lib>/libpython3.7m.so.1.0
    

Предоставление доступа к папке Python

Присвойте параметру datadirectories в разделе "Расширяемость" файла /var/opt/mssql/mssql.conf значение настраиваемой установки Python.

sudo /opt/mssql/bin/mssql-conf set extensibility.datadirectories <path to python3.7>

Перезапуск службы mssql-launchpadd

Чтобы перезапустить службу mssql-launchpadd, выполните приведенную ниже команду.

sudo systemctl restart mssql-launchpadd

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

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

  1. Скачайте файл python-lang-extension-linux-release.zip из репозитория GitHub для расширений языка SQL Server.

    Для среды разработки или тестирования также можно использовать отладочную версию (python-lang-extension-linux-debug.zip). Отладочная версия сохраняет в журнал подробные сведения, которые помогают изучать ошибки, и не рекомендуется для рабочих сред.

  2. С помощью Azure Data Studio подключитесь к экземпляру SQL Server и выполните приведенную ниже команду T-SQL, чтобы зарегистрировать расширение языка Python с помощью инструкции CREATE EXTERNAL LANGUAGE.

    Измените путь в этой инструкции таким образом, чтобы он указывал расположение скачанного ZIP-файла с расширением языка (python-lang-extension-linux-release.zip).

    CREATE EXTERNAL LANGUAGE [myPython]
    FROM (CONTENT = N'/path/to/python-lang-extension-linux-release.zip', FILE_NAME = 'libPythonExtension.so.1.1');
    GO
    

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

    Примечание.

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

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

Перед установкой настраиваемой среды выполнения Python установите указанные ниже компоненты.

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

Примечание.

Если в SQL Server 2019 установлены Службы машинного обучения, значит, пакет mssql-server-extensibility для расширений языка уже установлен и этот шаг можно пропустить.

Выполните приведенную ниже команду, чтобы установить расширения языка SQL Server для Red Hat Enterprise Linux (RHEL), которые используются в настраиваемой среде выполнения Python.

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

Установка Python 3.7 и Pandas

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

  1. Чтобы установить Python 3.7, выполните приведенные ниже команды.

    # Install python3.7 and the corresponding library:
    yum install gcc openssl-devel bzip2-devel libffi-devel zlib-devel
    
    cd /usr/src
    wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz
    tar xzf Python-3.7.9.tgz
    
    cd Python-3.7.9
    ./configure --enable-optimizations --prefix=/usr
    make altinstall
    
  2. Чтобы установить пакет pandas, выполните приведенную ниже команду.

    # Install pandas to /usr/lib:
    sudo python3.7 -m pip install pandas -t /usr/lib/python3.7/dist-packages
    

Настраиваемая установка Python

Примечание.

Если вы установили Python 3.7 в расположение /usr/lib/python3.7 по умолчанию, этот раздел можно пропустить и сразу перейти к разделу Регистрация расширения языка.

Если вы скомпилировали собственную версию Python 3.7, выполните приведенные ниже команды, чтобы сообщить SQL Server о настраиваемой установке.

Добавление переменной среды

Измените службу mssql-launchpadd, добавив переменную среды PYTHONHOME в файл /etc/systemd/system/mssql-launchpadd.service.d/override.conf.

  1. Откройте файл с помощью systemctl.

    sudo systemctl edit mssql-launchpadd
    
  2. Вставьте следующий текст в открывающийся файл /etc/systemd/system/mssql-launchpadd.service.d/override.conf. Установите значение параметра PYTHONHOME в соответствии с путем установки настраиваемой версии Python.

    [Service]
    Environment="PYTHONHOME=<path to the python3.7 lib>"
    
  3. Сохраните файл и закройте редактор.

Убедитесь, что удается загрузить libpython3.7m.so.1.0.

  1. Создайте файл custom-python.conf в /etc/ld.so.conf.d.

    sudo vi /etc/ld.so.conf.d/custom-python.conf
    
  2. В открывшийся файл добавьте путь к libpython3.7m.so.1.0 из настраиваемой установки Python.

    <path to the python3.7 lib>
    
  3. Сохраните новый файл и закройте редактор.

  4. Запустите ldconfig и убедитесь, что можно загрузить libpython3.7m.so.1.0, выполнив следующую команду и проверив наличие всех зависимых библиотек.

    sudo ldconfig
    ldd <path to the python3.7 lib>/libpython3.7m.so.1.0
    

Предоставление доступа к папке Python

Присвойте параметру datadirectories в разделе "Расширяемость" файла /var/opt/mssql/mssql.conf значение настраиваемой установки Python.

sudo /opt/mssql/bin/mssql-conf set extensibility.datadirectories <path to python3.7>

Перезапуск службы mssql-launchpadd

Чтобы перезапустить службу mssql-launchpadd, выполните приведенную ниже команду.

sudo systemctl restart mssql-launchpadd

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

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

  1. Скачайте файл python-lang-extension-linux-release.zip из репозитория GitHub для расширений языка SQL Server.

    Для среды разработки или тестирования также можно использовать отладочную версию (python-lang-extension-linux-debug.zip). Отладочная версия сохраняет в журнал подробные сведения, которые помогают изучать ошибки, и не рекомендуется для рабочих сред.

  2. С помощью Azure Data Studio подключитесь к экземпляру SQL Server и выполните приведенную ниже команду T-SQL, чтобы зарегистрировать расширение языка Python с помощью инструкции CREATE EXTERNAL LANGUAGE.

    Измените путь в этой инструкции таким образом, чтобы он указывал расположение скачанного ZIP-файла с расширением языка (python-lang-extension-linux-release.zip).

    CREATE EXTERNAL LANGUAGE [myPython]
    FROM (CONTENT = N'/path/to/python-lang-extension-linux-release.zip', FILE_NAME = 'libPythonExtension.so.1.1');
    GO
    

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

    Примечание.

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

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

Перед установкой настраиваемой среды выполнения Python установите указанные ниже компоненты.

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

Примечание.

Если в SQL Server 2019 установлены Службы машинного обучения, значит, пакет mssql-server-extensibility для расширений языка уже установлен и этот шаг можно пропустить.

Выполните приведенную ниже команду, чтобы установить расширения языка SQL Server для SUSE Linux Enterprise Server (SLES), которые используются в настраиваемой среде выполнения Python.

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

Установка Python 3.7 и Pandas

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

  1. Установите на сервере Python 3.7.

  2. Чтобы установить пакет pandas, выполните приведенную ниже команду.

    # Install pandas to /usr/lib:
    sudo python3.7 -m pip install pandas -t /usr/lib/python3.7/dist-packages
    

Настраиваемая установка Python

Примечание.

Если вы установили Python 3.7 в расположение /usr/lib/python3.7 по умолчанию, этот раздел можно пропустить и сразу перейти к разделу Регистрация расширения языка.

Если вы скомпилировали собственную версию Python 3.7, выполните приведенные ниже команды, чтобы сообщить SQL Server о настраиваемой установке.

Добавление переменной среды

Измените службу mssql-launchpadd, добавив переменную среды PYTHONHOME в файл /etc/systemd/system/mssql-launchpadd.service.d/override.conf.

  1. Откройте файл с помощью systemctl.

    sudo systemctl edit mssql-launchpadd
    
  2. Вставьте следующий текст в открывающийся файл /etc/systemd/system/mssql-launchpadd.service.d/override.conf. Установите значение параметра PYTHONHOME в соответствии с путем установки настраиваемой версии Python.

    [Service]
    Environment="PYTHONHOME=<path to the python3.7 lib>"
    
  3. Сохраните файл и закройте редактор.

Убедитесь, что удается загрузить libpython3.7m.so.1.0.

  1. Создайте файл custom-python.conf в /etc/ld.so.conf.d.

    sudo vi /etc/ld.so.conf.d/custom-python.conf
    
  2. В открывшийся файл добавьте путь к libpython3.7m.so.1.0 из настраиваемой установки Python.

    <path to the python3.7 lib>
    
  3. Сохраните новый файл и закройте редактор.

  4. Запустите ldconfig и убедитесь, что можно загрузить libpython3.7m.so.1.0, выполнив следующую команду и проверив наличие всех зависимых библиотек.

    sudo ldconfig
    ldd <path to the python3.7 lib>/libpython3.7m.so.1.0
    

Предоставление доступа к папке Python

Присвойте параметру datadirectories в разделе "Расширяемость" файла /var/opt/mssql/mssql.conf значение настраиваемой установки Python.

sudo /opt/mssql/bin/mssql-conf set extensibility.datadirectories <path to python3.7>

Перезапуск службы mssql-launchpadd

Чтобы перезапустить службу mssql-launchpadd, выполните приведенную ниже команду.

sudo systemctl restart mssql-launchpadd

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

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

  1. Скачайте файл python-lang-extension-linux-release.zip из репозитория GitHub для расширений языка SQL Server.

    Для среды разработки или тестирования также можно использовать отладочную версию (python-lang-extension-linux-debug.zip). Отладочная версия сохраняет в журнал подробные сведения, которые помогают изучать ошибки, и не рекомендуется для рабочих сред.

  2. С помощью Azure Data Studio подключитесь к экземпляру SQL Server и выполните приведенную ниже команду T-SQL, чтобы зарегистрировать расширение языка Python с помощью инструкции CREATE EXTERNAL LANGUAGE.

    Измените путь в этой инструкции таким образом, чтобы он указывал расположение скачанного ZIP-файла с расширением языка (python-lang-extension-linux-release.zip).

    CREATE EXTERNAL LANGUAGE [myPython]
    FROM (CONTENT = N'/path/to/python-lang-extension-linux-release.zip', FILE_NAME = 'libPythonExtension.so.1.1');
    GO
    

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

    Примечание.

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

Включение внешних скриптов

Вы можете выполнять внешние скрипты Python с помощью хранимой процедуры sp_execute_external script.

Чтобы включить внешние скрипты, выполните с помощью Azure Data Studio приведенную ниже инструкцию.

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

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

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

EXEC sp_execute_external_script
@language =N'myPython',
@script=N'
import sys
print(sys.path)
print(sys.version)
print(sys.executable)'

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