Instalar um runtime personalizado de Python para o SQL Server

Aplica-se a: SQL Server 2019 (15.x)

Saiba mais sobre como instalar um runtime personalizado do Python para executar scripts externos do Python com o SQL Server em:

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

O runtime personalizado pode executar scripts de machine learning e usa as Extensões de Linguagem do SQL Server.

Use a sua versão do runtime do Python com o SQL Server, em vez da versão de runtime padrão instalada com os Serviços de Machine Learning do SQL Server.

A partir do SQL Server 2022 (16.x), os runtimes do R, do Python e do Java não são mais instalados com a Instalação do SQL. Portanto, instale os pacotes e os runtimes personalizados Python desejados. Para obter mais informações, confira Instalar os Serviços do Microsoft Machine Learning (Python e R) do SQL Server 2022 no Windows ou Instalar os Serviços do Microsoft Machine Learning do SQL Server (Python e R) no Linux.

Pré-requisitos

Antes de instalar um runtime personalizado de Python, instale:

Instalar extensões de linguagem

Observação

Se você tem os Serviços de Machine Learning instalados no SQL Server 2019, as Extensões de Linguagem já estão instaladas e você pode ignorar esta etapa.

Siga as etapas abaixo para instalar as Extensões de Linguagem do SQL Server, que são usadas para o runtime personalizado do Python.

  1. Inicie o assistente de instalação do SQL Server 2019.

  2. Na guia Instalação, selecione Nova instalação autônoma do SQL Server ou adicionar recursos a uma instalação existente.

  3. Na página Seleção de Recursos , selecione estas opções:

    • Serviços do Mecanismo de Banco de Dados

      Para usar as Extensões de Linguagem com o SQL Server, você deverá instalar uma instância do mecanismo de banco de dados. Use uma instância nova ou existente.

    • Serviços de Machine Learning e Extensões de Linguagem

      Selecione Serviços de Machine Learning e Extensões de Linguagem. Não selecione Python, pois você instalará o runtime do Python personalizado mais tarde.

      SQL Server 2019 Language Extensions setup.

  4. Na página Pronto para instalar, verifique se essas seleções estão incluídas e selecione Instalar.

    • Serviços do Mecanismo de Banco de Dados
    • Serviços de Machine Learning e Extensões de Linguagem
  5. Após a conclusão da instalação, reinicie o computador, se solicitado.

Importante

Se você instalar uma nova instância do SQL Server 2019 com as Extensões de Linguagem, instale a CU (atualização cumulativa) 3 ou posterior antes de prosseguir para a próxima etapa.

Instalar o Python

Atualmente, a extensão de linguagem do Python usada para o runtime personalizado do Python só dá suporte ao Python 3.7. Caso deseje usar uma versão diferente do Python, siga a instrução descrita no repositório GitHub da Extensão de Linguagem do Python para modificar e recompilar a extensão.

  1. Baixe o Python 3.7 para Windows e execute a instalação no servidor.

  2. Selecione Adicionar Python 3.7 ao PATH e clique em Personalizar a instalação.

    Python 3.7 installation - Add Python 3.7 to PATH

  3. Em Recursos Opcionais, mantenha os padrões e selecione Avançar.

  4. Selecione Instalar para todos os usuários e anote a localização da instalação.

    Python 3.7 installation - Install for all users

  5. Selecione Instalar.

Instalar o pandas

Instale o pacote pandas para Python em um prompt de comandos com privilégios elevados (Executar como Administrador):

python.exe -m pip install pandas

Permitir acesso à pasta do Python

Execute os comandos icacls a seguir em um novo prompt de comandos com privilégios elevados para permitir o acesso de READ & EXECUTE à localização da instalação do Python ao Serviço SQL Server Launchpad e ao SID S-1-15-2-1 (ALL_APPLICATION_PACKAGES).

Os exemplos a seguir usam a localização da instalação do Python como C:\Program Files\Python37. Se a sua localização for diferente, altere-o no comando.

  1. Conceder permissões ao Nome de usuário do Serviço SQL Server Launchpad.

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

    Para a instância nomeada, o comando será icacls "C:\Program Files\Python37" /grant "NT Service\MSSQLLAUNCHPAD$SQL01":(OI)(CI)RX /T para uma instância chamada SQL01.

  2. Conceda permissões a SID S-1-15-2-1.

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

    O comando anterior concede permissões ao SID S-1-15-2-1 do computador, que é equivalente a TODOS OS PACOTES DE APLICATIVOS em uma versão em inglês do Windows. Como alternativa, é possível usar icacls "C:\Program Files\Python37" /grant "ALL APPLICATION PACKAGES":(OI)(CI)RX /T em uma versão em inglês do Windows.

Reiniciar o SQL Server Launchpad

Siga estas etapas para reiniciar o serviço SQL Server Launchpad.

  1. Abra o SQL Server Configuration Manager.

  2. Em Serviços do SQL Server, clique com o botão direito do mouse em SQL Server Launchpad (MSSQLSERVER) e selecione Reiniciar. Se estiver usando uma instância nomeada, o nome da instância será mostrado em vez de (MSSQLSERVER) .

Registrar a extensão de linguagem

Siga estas etapas para baixar e registrar a extensão de linguagem do Python, que é usada para o runtime personalizado do Python.

  1. Baixe o arquivo python-lang-extension-windows-release.zip do repositório GitHub das Extensões de Linguagem do SQL Server.

    Como alternativa, você pode usar a versão de depuração (python-lang-extension-windows-debug.zip) em um ambiente de desenvolvimento ou teste. A versão de depuração fornece informações detalhadas de log para investigar os erros e não é recomendada para ambientes de produção.

  2. Use o Azure Data Studio para se conectar à sua instância do SQL Server e execute o comando T-SQL a seguir para registrar a extensão de linguagem do Python com CREATE EXTERNAL LANGUAGE.

    Modifique o caminho na instrução de maneira a refletir a localização do arquivo zip da extensão de linguagem baixado (python-lang-extension-windows-release.zip) e a localização da sua instalação do 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
    

    Execute a instrução para cada banco de dados no qual deseja usar a extensão de linguagem do Python.

    Observação

    Python é uma palavra reservada e não pode ser usada como o nome de uma nova linguagem externa. Use outro nome. Por exemplo, a instrução acima usa myPython.

Pré-requisitos

Antes de instalar um runtime personalizado de Python, instale:

Instalar extensões de linguagem

Observação

Se você tem os Serviços de Machine Learning instalados no SQL Server 2019, o pacote mssql-server-extensibility de Extensões de Linguagem já está instalado e você pode ignorar esta etapa.

Execute os comandos abaixo para instalar as Extensões de Linguagem do SQL Server no Ubuntu Linux, que são usadas para o runtime personalizado do Python.

  1. Se possível, execute este comando para atualizar os pacotes no sistema antes da instalação.

    # Install as root or sudo
    sudo apt-get update
    
  2. O Ubuntu pode não ter a opção de transporte https apt. Para instalá-lo, execute este comando.

    # Install as root or sudo
    apt-get install apt-transport-https
    
  3. Instale mssql-server-extensibility com este comando.

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

Instalar Python 3.7 e pandas

Atualmente, a extensão de linguagem do Python usada para o runtime personalizado do Python só dá suporte ao Python 3.7. Caso deseje usar uma versão diferente do Python, siga a instrução descrita no repositório GitHub da Extensão de Linguagem do Python para modificar e recompilar a extensão.

  1. Execute os comandos abaixo para instalar o 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. Execute o comando a seguir para instalar o pacote pandas

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

Instalação personalizada do Python

Observação

Se você instalou o Python 3.7 na localização padrão /usr/lib/python3.7, ignore esta seção e passe para a seção Registrar a extensão de linguagem.

Se você criou sua versão do Python 3.7, use os comandos a seguir para permitir que o SQL Server reconheça sua instalação personalizada.

Adicionar uma variável de ambiente

Primeiro, edite o serviço mssql-launchpadd para adicionar a variável de ambiente PYTHONHOME ao arquivo /etc/systemd/system/mssql-launchpadd.service.d/override.conf

  1. Abra o arquivo com o systemctl

    sudo systemctl edit mssql-launchpadd
    
  2. Insira o texto a seguir no arquivo /etc/systemd/system/mssql-launchpadd.service.d/override.conf que é aberto. Defina o valor de PYTHONHOME como o caminho de instalação personalizada do Python.

    [Service]
    Environment="PYTHONHOME=<path to the python3.7 lib>"
    
  3. Salve o arquivo e feche o editor.

Depois, verifique se libpython3.7m.so.1.0 pode ser carregado.

  1. Crie um arquivo custom-python.conf em /etc/ld.so.conf.d.

    sudo vi /etc/ld.so.conf.d/custom-python.conf
    
  2. No arquivo que é aberto, adicione o caminho para libpython3.7m.so.1.0 da instalação personalizada do Python.

    <path to the python3.7 lib>
    
  3. Salve o novo arquivo e feche o editor.

  4. Execute ldconfig e verifique se libpython3.7m.so.1.0 pode ser carregado executando os comandos a seguir e verificando se todas as bibliotecas dependentes podem ser encontradas.

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

Permitir acesso à pasta do Python

Defina a opção datadirectories na seção de extensibilidade do arquivo /var/opt/mssql/mssql.conf como a instalação personalizada do Python.

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

Reiniciar o mssql-launchpadd

Execute o comando a seguir para reiniciar mssql-launchpadd.

sudo systemctl restart mssql-launchpadd

Registrar a extensão de linguagem

Siga estas etapas para baixar e registrar a extensão de linguagem do Python, que é usada para o runtime personalizado do Python.

  1. Baixe o arquivo python-lang-extension-linux-release.zip do repositório GitHub das Extensões de Linguagem do SQL Server.

    Como alternativa, você pode usar a versão de depuração (python-lang-extension-linux-debug.zip) em um ambiente de desenvolvimento ou teste. A versão de depuração fornece informações detalhadas de log para investigar os erros e não é recomendada para ambientes de produção.

  2. Use o Azure Data Studio para se conectar à sua instância do SQL Server e execute o comando T-SQL a seguir para registrar a extensão de linguagem do Python com CREATE EXTERNAL LANGUAGE.

    Modifique o caminho na instrução de maneira a refletir a localização do arquivo zip da extensão de linguagem baixada (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
    

    Execute a instrução para cada banco de dados no qual deseja usar a extensão de linguagem do Python.

    Observação

    Python é uma palavra reservada e não pode ser usada como o nome de uma nova linguagem externa. Use outro nome. Por exemplo, a instrução acima usa myPython.

Pré-requisitos

Antes de instalar um runtime personalizado de Python, instale:

Instalar extensões de linguagem

Observação

Se você tem os Serviços de Machine Learning instalados no SQL Server 2019, o pacote mssql-server-extensibility de Extensões de Linguagem já está instalado e você pode ignorar esta etapa.

Execute os comandos abaixo para instalar as Extensões de Linguagem do SQL Server no RHEL (Red Hat Enterprise Linux), que são usadas para o runtime personalizado do Python.

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

Instalar Python 3.7 e pandas

Atualmente, a extensão de linguagem do Python usada para o runtime personalizado do Python só dá suporte ao Python 3.7. Caso deseje usar uma versão diferente do Python, siga a instrução descrita no repositório GitHub da Extensão de Linguagem do Python para modificar e recompilar a extensão.

  1. Execute os comandos abaixo para instalar o 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. Execute o comando a seguir para instalar o pacote pandas

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

Instalação personalizada do Python

Observação

Se você instalou o Python 3.7 na localização padrão /usr/lib/python3.7, ignore esta seção e passe para a seção Registrar a extensão de linguagem.

Se você criou sua versão do Python 3.7, use os comandos a seguir para permitir que o SQL Server reconheça sua instalação personalizada.

Adicionar uma variável de ambiente

Primeiro, edite o serviço mssql-launchpadd para adicionar a variável de ambiente PYTHONHOME ao arquivo /etc/systemd/system/mssql-launchpadd.service.d/override.conf

  1. Abra o arquivo com o systemctl

    sudo systemctl edit mssql-launchpadd
    
  2. Insira o texto a seguir no arquivo /etc/systemd/system/mssql-launchpadd.service.d/override.conf que é aberto. Defina o valor de PYTHONHOME como o caminho de instalação personalizada do Python.

    [Service]
    Environment="PYTHONHOME=<path to the python3.7 lib>"
    
  3. Salve o arquivo e feche o editor.

Depois, verifique se libpython3.7m.so.1.0 pode ser carregado.

  1. Crie um arquivo custom-python.conf em /etc/ld.so.conf.d.

    sudo vi /etc/ld.so.conf.d/custom-python.conf
    
  2. No arquivo que é aberto, adicione o caminho para libpython3.7m.so.1.0 da instalação personalizada do Python.

    <path to the python3.7 lib>
    
  3. Salve o novo arquivo e feche o editor.

  4. Execute ldconfig e verifique se libpython3.7m.so.1.0 pode ser carregado executando os comandos a seguir e verificando se todas as bibliotecas dependentes podem ser encontradas.

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

Permitir acesso à pasta do Python

Defina a opção datadirectories na seção de extensibilidade do arquivo /var/opt/mssql/mssql.conf como a instalação personalizada do Python.

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

Reiniciar o mssql-launchpadd

Execute o comando a seguir para reiniciar mssql-launchpadd.

sudo systemctl restart mssql-launchpadd

Registrar a extensão de linguagem

Siga estas etapas para baixar e registrar a extensão de linguagem do Python, que é usada para o runtime personalizado do Python.

  1. Baixe o arquivo python-lang-extension-linux-release.zip do repositório GitHub das Extensões de Linguagem do SQL Server.

    Como alternativa, você pode usar a versão de depuração (python-lang-extension-linux-debug.zip) em um ambiente de desenvolvimento ou teste. A versão de depuração fornece informações detalhadas de log para investigar os erros e não é recomendada para ambientes de produção.

  2. Use o Azure Data Studio para se conectar à sua instância do SQL Server e execute o comando T-SQL a seguir para registrar a extensão de linguagem do Python com CREATE EXTERNAL LANGUAGE.

    Modifique o caminho na instrução de maneira a refletir a localização do arquivo zip da extensão de linguagem baixada (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
    

    Execute a instrução para cada banco de dados no qual deseja usar a extensão de linguagem do Python.

    Observação

    Python é uma palavra reservada e não pode ser usada como o nome de uma nova linguagem externa. Use outro nome. Por exemplo, a instrução acima usa myPython.

Pré-requisitos

Antes de instalar um runtime personalizado de Python, instale:

Instalar extensões de linguagem

Observação

Se você tem os Serviços de Machine Learning instalados no SQL Server 2019, o pacote mssql-server-extensibility de Extensões de Linguagem já está instalado e você pode ignorar esta etapa.

Execute os comandos abaixo para instalar as Extensões de Linguagem do SQL Server no SLES (SUSE Linux Enterprise Server), que são usadas para o runtime personalizado do Python.

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

Instalar Python 3.7 e pandas

Atualmente, a extensão de linguagem do Python usada para o runtime personalizado do Python só dá suporte ao Python 3.7. Caso deseje usar uma versão diferente do Python, siga a instrução descrita no repositório GitHub da Extensão de Linguagem do Python para modificar e recompilar a extensão.

  1. Instale o Python 3.7 no servidor.

  2. Execute o comando a seguir para instalar o pacote pandas

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

Instalação personalizada do Python

Observação

Se você instalou o Python 3.7 na localização padrão /usr/lib/python3.7, ignore esta seção e passe para a seção Registrar a extensão de linguagem.

Se você criou sua versão do Python 3.7, use os comandos a seguir para permitir que o SQL Server reconheça sua instalação personalizada.

Adicionar uma variável de ambiente

Primeiro, edite o serviço mssql-launchpadd para adicionar a variável de ambiente PYTHONHOME ao arquivo /etc/systemd/system/mssql-launchpadd.service.d/override.conf

  1. Abra o arquivo com o systemctl

    sudo systemctl edit mssql-launchpadd
    
  2. Insira o texto a seguir no arquivo /etc/systemd/system/mssql-launchpadd.service.d/override.conf que é aberto. Defina o valor de PYTHONHOME como o caminho de instalação personalizada do Python.

    [Service]
    Environment="PYTHONHOME=<path to the python3.7 lib>"
    
  3. Salve o arquivo e feche o editor.

Depois, verifique se libpython3.7m.so.1.0 pode ser carregado.

  1. Crie um arquivo custom-python.conf em /etc/ld.so.conf.d.

    sudo vi /etc/ld.so.conf.d/custom-python.conf
    
  2. No arquivo que é aberto, adicione o caminho para libpython3.7m.so.1.0 da instalação personalizada do Python.

    <path to the python3.7 lib>
    
  3. Salve o novo arquivo e feche o editor.

  4. Execute ldconfig e verifique se libpython3.7m.so.1.0 pode ser carregado executando os comandos a seguir e verificando se todas as bibliotecas dependentes podem ser encontradas.

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

Permitir acesso à pasta do Python

Defina a opção datadirectories na seção de extensibilidade do arquivo /var/opt/mssql/mssql.conf como a instalação personalizada do Python.

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

Reiniciar o mssql-launchpadd

Execute o comando a seguir para reiniciar mssql-launchpadd.

sudo systemctl restart mssql-launchpadd

Registrar a extensão de linguagem

Siga estas etapas para baixar e registrar a extensão de linguagem do Python, que é usada para o runtime personalizado do Python.

  1. Baixe o arquivo python-lang-extension-linux-release.zip do repositório GitHub das Extensões de Linguagem do SQL Server.

    Como alternativa, você pode usar a versão de depuração (python-lang-extension-linux-debug.zip) em um ambiente de desenvolvimento ou teste. A versão de depuração fornece informações detalhadas de log para investigar os erros e não é recomendada para ambientes de produção.

  2. Use o Azure Data Studio para se conectar à sua instância do SQL Server e execute o comando T-SQL a seguir para registrar a extensão de linguagem do Python com CREATE EXTERNAL LANGUAGE.

    Modifique o caminho na instrução de maneira a refletir a localização do arquivo zip da extensão de linguagem baixada (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
    

    Execute a instrução para cada banco de dados no qual deseja usar a extensão de linguagem do Python.

    Observação

    Python é uma palavra reservada e não pode ser usada como o nome de uma nova linguagem externa. Use outro nome. Por exemplo, a instrução acima usa myPython.

Habilitar scripts externos

Você pode executar scripts externos do Python com o procedimento armazenado sp_execute_external script.

Para habilitar scripts externos, use o Azure Data Studio para executar a instrução abaixo.

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

Verifique a instalação

Use o script SQL a seguir para verificar a instalação e a funcionalidade do runtime personalizado do Python. No script de exemplo abaixo, myPython é usado como o nome do idioma porque o nome de idioma padrão Python não pode ser fornecido para um runtime personalizado.

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

Próximas etapas