Partilhar via


Instalar um runtime personalizado em Python para SQL Server

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

Aprenda a instalar um runtime personalizado em Python para executar scripts Python externos com SQL Server em:

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

O runtime personalizado pode executar scripts de aprendizagem automática e utiliza as Extensões da Linguagem SQL Server.

Usa a tua própria versão do runtime em Python com SQL Server, em vez da versão padrão de runtime instalada com SQL Server Machine Learning Services.

A partir do SQL Server 2022 (16.x), os tempos de execução para R, Python e Java não são mais instalados com a Instalação do SQL. Em vez disso, instala o(s) runtime(s) e pacotes personalizados em Python que pretendes. Para mais informações, consulte Instalar Serviços de Aprendizagem Automática SQL Server 2022 (Python e R) no Windows ou Instalar Serviços de Aprendizagem Automática SQL Server (Python e R) no Linux.

Pré-requisitos

Antes de instalar um runtime personalizado em Python, instale:

Instalar extensões de linguagem

Observação

Se tiver o Machine Learning Services instalado no SQL Server 2019, o Language Extensions já está instalado e pode saltar este passo.

Siga os passos abaixo para instalar as Extensões da Linguagem SQL Server, que são usadas para o runtime personalizado em Python.

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

  2. Na guia Instalação , selecione Nova instalação autônoma do SQL Server ou adicione 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 Extensões de Linguagem com SQL Server, deve instalar uma instância do motor de base de dados. Pode usar uma instância nova ou já existente.

    • Serviços de Aprendizagem Automática e Extensões de Linguagem

      Selecione Serviços de Aprendizagem Automática e Extensões de Linguagem. Não escolhas Python, pois vais instalar o runtime personalizado em Python mais tarde.

      Configuração de extensões de linguagem SQL Server 2019.

  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 Aprendizagem Automática e Extensões de Linguagem
  5. Depois de concluída a configuração, reinicie a máquina se lhe pedirem.

Importante

Se instalar uma nova instância do SQL Server 2019 com Extensões de Linguagem, instale a Atualização Cumulativa () 3 ou posterior antes de continuar para o passo seguinte.

Instalar o Python

A extensão da linguagem Python usada para o runtime Python personalizado suporta atualmente apenas Python 3.7. Se quiser usar uma versão diferente do Python, siga a instrução no repositório GitHub da Extensão da Linguagem Python para modificar e reconstruir a extensão.

  1. Descarregue o Python 3.7 para Windows e execute a configuração no servidor.

  2. Selecione Adicionar Python 3.7 ao PATH e depois selecione Personalizar instalação.

    Instalação de Python 3.7 - Adicionar Python 3.7 ao PATH

  3. Em Funcionalidades Opcionais, saia das definições e selecione Próximo.

  4. Selecione Instalar para todos os utilizadores e anote o local de instalação.

    Instalação de Python 3.7 - Instalar para todos os utilizadores

  5. Selecione Instalar.

Instalar pandas

Instale o pacote pandas para Python a partir de um prompt de comandos elevado (Executar como Administrador):

python.exe -m pip install pandas

Conceder acesso à pasta Python

Execute os seguintes comandos icacls a partir de uma nova janela de comando elevada para conceder acesso READ & EXECUTE à instalação do Python ao SQL Server Launchpad Service e à SID S-1-15-2-1 (ALL_APPLICATION_PACKAGES).

Os exemplos abaixo utilizam o local de instalação em Python como C:\Program Files\Python37. Se a sua localização for diferente, altere-a no comando.

  1. Conceda permissões ao nome de utilizador do SQL Server Launchpad Service.

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

    Para uma 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. Dê permissões ao 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 do computador S-1-15-2-1, que é equivalente a TODOS OS PACOTES DE APLICAÇÕES numa versão inglesa do Windows. Como alternativa, você pode 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 Launchpad do SQL Server

Siga estes passos para reiniciar o serviço SQL Server Launchpad.

  1. Abra SQL Server Configuration Manager.

  2. Em SQL Server Services, clique com o botão direito em SQL Server Launchpad (MSSQLSERVER) e selecione Reiniciar. Se estiver a usar uma instância nomeada, o nome da instância será mostrado em vez de (MSSQLSERVER).

Extensão da linguagem de registos

Siga estes passos para descarregar e registar a extensão da linguagem Python, que é usada para o runtime personalizado Python.

  1. Descarregue o ficheiro python-lang-extension-windows-release.zip do repositório GitHub das Extensões da Linguagem SQL Server.

    Em alternativa, pode usar a versão de depuração (python-lang-extension-windows-debug.zip) num ambiente de desenvolvimento ou teste. A versão de depuração fornece informação detalhada de registo para investigar eventuais erros, e não é recomendada para ambientes de produção.

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

    Modifique o caminho nesta instrução para refletir a localização do ficheiro zip da extensão de linguagem descarregada (python-lang-extension-windows-release.zip) e a localização da sua instalação em 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
    

    Executa a instrução para cada base de dados onde queres usar a extensão da linguagem Python.

    Observação

    Python é uma palavra reservada e não pode ser usada como nome para uma nova linguagem externa. Use um nome diferente em vez disso. Por exemplo, a afirmação acima usa myPython.

Pré-requisitos

Antes de instalar um runtime Python personalizado, instale os seguintes pré-requisitos:

Instalar extensões de linguagem

Observação

Se tiver os Serviços de Aprendizagem Automática instalados no SQL Server 2019, o pacote mssql-server-extensibility para Extensões de Linguagem já está instalado e pode saltar este passo.

Execute os comandos abaixo para instalar as Extensões da Linguagem SQL Server no Ubuntu Linux, que é usado para o runtime personalizado em 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 protocolo de transporte apt https. Para o instalar, 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

A extensão da linguagem Python usada para o runtime Python personalizado suporta atualmente apenas Python 3.7 . Se quiser usar uma versão diferente do Python, siga a instrução no repositório GitHub da Extensão da Linguagem Python para modificar e reconstruir 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 abaixo 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 de Python

Observação

Se instalou o Python 3.7 na localização padrão de /usr/lib/python3.7, pode saltar esta secção e passar para a secção da extensão da linguagem Register .

Se construiu a sua própria versão de Python 3.7, use os seguintes comandos para informar o SQL Server sobre a sua instalação personalizada.

Adicionar variável ambiente

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

  1. Abra o ficheiro com systemctl

    sudo systemctl edit mssql-launchpadd
    
  2. Insira o texto seguinte no /etc/systemd/system/mssql-launchpadd.service.d/override.conf ficheiro que se abre. Defina o valor do PYTHONHOME para o caminho de instalação personalizado do Python.

    [Service]
    Environment="PYTHONHOME=<path to the python3.7 lib>"
    
  3. Guarda o ficheiro e fecha o editor.

De seguida, certifique-se de que libpython3.7m.so.1.0 possa ser carregado.

  1. Crie um ficheiro personalizado-python.conf em /etc/ld.so.conf.d.

    sudo vi /etc/ld.so.conf.d/custom-python.conf
    
  2. No ficheiro que abre, adiciona o caminho para libpython3.7m.so.1.0 a partir da instalação personalizada em Python.

    <path to the python3.7 lib>
    
  3. Guarda o novo ficheiro e fecha o editor.

  4. Executar ldconfig e verificar se libpython3.7m.so.1.0 pode ser carregado executando os seguintes comandos e verificando se todas as bibliotecas dependentes possam ser encontradas.

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

Conceder acesso à pasta Python

Defina a datadirectories opção na secção de extensibilidade do /var/opt/mssql/mssql.conf ficheiro para a instalação personalizada em python.

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

Reiniciar mssql-launchpadd

Execute o seguinte comando para reiniciar o mssql-launchpadd.

sudo systemctl restart mssql-launchpadd

Extensão da linguagem de registos

Siga estes passos para descarregar e registar a extensão Python, que é utilizada para o runtime personalizado Python.

  1. Descarregue o ficheiro python-lang-extension-linux-release.zip do repositório GitHub das Extensões da Linguagem SQL Server.

    Em alternativa, pode usar a versão de depuração (python-lang-extension-linux-debug.zip) num ambiente de desenvolvimento ou teste. A versão de depuração fornece informação detalhada de registo para investigar eventuais erros, e não é recomendada para ambientes de produção.

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

    Modifique o caminho nesta instrução para refletir a localização do ficheiro zip da extensão de linguagem descarregada (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
    

    Executa a instrução para cada base de dados onde queres usar a extensão da linguagem Python.

    Observação

    Python é uma palavra reservada e não pode ser usada como nome para uma nova linguagem externa. Use um nome diferente em vez disso. Por exemplo, a afirmação acima usa myPython.

Pré-requisitos

Antes de instalar um runtime Python personalizado, instale os seguintes pré-requisitos:

Instalar extensões de linguagem

Observação

Se tiver os Serviços de Aprendizagem Automática instalados no SQL Server 2019, o pacote mssql-server-extensibility para Extensões de Linguagem já está instalado e pode saltar este passo.

Execute o seguinte comando para instalar as Extensões da Linguagem SQL Server no Red Hat Enterprise Linux (RHEL), que é usado para o runtime personalizado do Python.

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

Instalar Python 3.7 e pandas

A extensão da linguagem Python usada para o runtime Python personalizado suporta atualmente apenas Python 3.7 . Se quiser usar uma versão diferente do Python, siga a instrução no repositório GitHub da Extensão da Linguagem Python para modificar e reconstruir 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 abaixo 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 de Python

Observação

Se instalou o Python 3.7 na localização padrão de /usr/lib/python3.7, pode saltar esta secção e passar para a secção da extensão da linguagem Register .

Se construiu a sua própria versão de Python 3.7, use os seguintes comandos para informar o SQL Server sobre a sua instalação personalizada.

Adicionar variável ambiente

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

  1. Abra o ficheiro com systemctl

    sudo systemctl edit mssql-launchpadd
    
  2. Insira o texto seguinte no /etc/systemd/system/mssql-launchpadd.service.d/override.conf ficheiro que se abre. Defina o valor do PYTHONHOME para o caminho de instalação personalizado do Python.

    [Service]
    Environment="PYTHONHOME=<path to the python3.7 lib>"
    
  3. Guarda o ficheiro e fecha o editor.

De seguida, certifique-se de que libpython3.7m.so.1.0 possa ser carregado.

  1. Crie um ficheiro personalizado-python.conf em /etc/ld.so.conf.d.

    sudo vi /etc/ld.so.conf.d/custom-python.conf
    
  2. No ficheiro que abre, adiciona o caminho para libpython3.7m.so.1.0 a partir da instalação personalizada em Python.

    <path to the python3.7 lib>
    
  3. Guarda o novo ficheiro e fecha o editor.

  4. Executar ldconfig e verificar se libpython3.7m.so.1.0 pode ser carregado executando os seguintes comandos e verificando se todas as bibliotecas dependentes possam ser encontradas.

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

Conceder acesso à pasta Python

Defina a datadirectories opção na secção de extensibilidade do /var/opt/mssql/mssql.conf ficheiro para a instalação personalizada em python.

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

Reiniciar mssql-launchpadd

Execute o seguinte comando para reiniciar o mssql-launchpadd.

sudo systemctl restart mssql-launchpadd

Extensão da linguagem de registos

Siga estes passos para descarregar e registar a extensão Python, que é utilizada para o runtime personalizado Python.

  1. Descarregue o ficheiro python-lang-extension-linux-release.zip do repositório GitHub das Extensões da Linguagem SQL Server.

    Em alternativa, pode usar a versão de depuração (python-lang-extension-linux-debug.zip) num ambiente de desenvolvimento ou teste. A versão de depuração fornece informação detalhada de registo para investigar eventuais erros, e não é recomendada para ambientes de produção.

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

    Modifique o caminho nesta instrução para refletir a localização do ficheiro zip da extensão de linguagem descarregada (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
    

    Executa a instrução para cada base de dados onde queres usar a extensão da linguagem Python.

    Observação

    Python é uma palavra reservada e não pode ser usada como nome para uma nova linguagem externa. Use um nome diferente em vez disso. Por exemplo, a afirmação acima usa myPython.

Pré-requisitos

Antes de instalar um runtime Python personalizado, instale os seguintes pré-requisitos:

Instalar extensões de linguagem

Observação

Se tiver os Serviços de Aprendizagem Automática instalados no SQL Server 2019, o pacote mssql-server-extensibility para Extensões de Linguagem já está instalado e pode saltar este passo.

Execute o comando abaixo para instalar as Extensões da Linguagem SQL Server no SUSE Linux Enterprise Server (SLES), que é usado para o runtime personalizado em Python.

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

Instalar Python 3.7 e pandas

A extensão da linguagem Python usada para o runtime Python personalizado suporta atualmente apenas Python 3.7 . Se quiser usar uma versão diferente do Python, siga a instrução no repositório GitHub da Extensão da Linguagem Python para modificar e reconstruir a extensão.

  1. Instale o Python 3.7 no servidor.

  2. Execute o comando abaixo 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 de Python

Observação

Se instalou o Python 3.7 na localização padrão de /usr/lib/python3.7, pode saltar esta secção e passar para a secção da extensão da linguagem Register .

Se construiu a sua própria versão de Python 3.7, use os seguintes comandos para informar o SQL Server sobre a sua instalação personalizada.

Adicionar variável ambiente

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

  1. Abra o ficheiro com systemctl

    sudo systemctl edit mssql-launchpadd
    
  2. Insira o texto seguinte no /etc/systemd/system/mssql-launchpadd.service.d/override.conf ficheiro que se abre. Defina o valor do PYTHONHOME para o caminho de instalação personalizado do Python.

    [Service]
    Environment="PYTHONHOME=<path to the python3.7 lib>"
    
  3. Guarda o ficheiro e fecha o editor.

De seguida, certifique-se de que libpython3.7m.so.1.0 possa ser carregado.

  1. Crie um ficheiro personalizado-python.conf em /etc/ld.so.conf.d.

    sudo vi /etc/ld.so.conf.d/custom-python.conf
    
  2. No ficheiro que abre, adiciona o caminho para libpython3.7m.so.1.0 a partir da instalação personalizada em Python.

    <path to the python3.7 lib>
    
  3. Guarda o novo ficheiro e fecha o editor.

  4. Executar ldconfig e verificar se libpython3.7m.so.1.0 pode ser carregado executando os seguintes comandos e verificando se todas as bibliotecas dependentes possam ser encontradas.

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

Conceder acesso à pasta Python

Defina a datadirectories opção na secção de extensibilidade do /var/opt/mssql/mssql.conf ficheiro para a instalação personalizada em python.

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

Reiniciar mssql-launchpadd

Execute o seguinte comando para reiniciar o mssql-launchpadd.

sudo systemctl restart mssql-launchpadd

Extensão da linguagem de registos

Siga estes passos para descarregar e registar a extensão Python, que é utilizada para o runtime personalizado Python.

  1. Descarregue o ficheiro python-lang-extension-linux-release.zip do repositório GitHub das Extensões da Linguagem SQL Server.

    Em alternativa, pode usar a versão de depuração (python-lang-extension-linux-debug.zip) num ambiente de desenvolvimento ou teste. A versão de depuração fornece informação detalhada de registo para investigar eventuais erros, e não é recomendada para ambientes de produção.

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

    Modifique o caminho nesta instrução para refletir a localização do ficheiro zip da extensão de linguagem descarregada (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
    

    Executa a instrução para cada base de dados onde queres usar a extensão da linguagem Python.

    Observação

    Python é uma palavra reservada e não pode ser usada como nome para uma nova linguagem externa. Use um nome diferente em vez disso. Por exemplo, a afirmação acima usa myPython.

Ativar scripts externos

Podes executar scripts externos em linguagem Python com o procedimento armazenado sp_execute_external script.

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

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

Verificar a instalação

Use o seguinte script SQL para verificar a instalação e funcionalidade do runtime personalizado em Python. No exemplo de script abaixo, myPython é usado como nome da linguagem porque o nome Python padrão da língua 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óximos passos