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:
- Se você usar uma instância existente do SQL Server, instale a CU (Atualização Cumulativa) 3 ou posterior do SQL Server 2019.
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.
Inicie o assistente de instalação do SQL Server 2019.
Na guia Instalação, selecione Nova instalação autônoma do SQL Server ou adicionar recursos a uma instalação existente.
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.
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
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.
Baixe o Python 3.7 para Windows e execute a instalação no servidor.
Selecione Adicionar Python 3.7 ao PATH e clique em Personalizar a instalação.
Em Recursos Opcionais, mantenha os padrões e selecione Avançar.
Selecione Instalar para todos os usuários e anote a localização da instalação.
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.
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.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.
Abra o SQL Server Configuration Manager.
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.
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.
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:
Instale o SQL Server 2019 para Linux. Você pode instalar o SQL Server no Red Hat Enterprise Linux (RHEL), no SUSE Linux Enterprise Server (SLES) e no Ubuntu. Para obter mais informações, confira as diretrizes de instalação do SQL Server em Linux.
Faça a atualização para a CU (atualização cumulativa) 3 ou posterior do SQL Server 2019. Siga estas etapas:
Configure os repositórios para atualizações cumulativas. Para obter mais informações, confira Configurar repositórios para instalar e atualizar o SQL Server em Linux.
Atualize o pacote mssql-server para a atualização cumulativa mais recente. Para obter mais informações, confira a seção Atualizar o SQL Server nas diretrizes de instalação do SQL Server em Linux.
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.
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
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
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.
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
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
Abra o arquivo com o systemctl
sudo systemctl edit mssql-launchpadd
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>"
Salve o arquivo e feche o editor.
Depois, verifique se libpython3.7m.so.1.0
pode ser carregado.
Crie um arquivo custom-python.conf em
/etc/ld.so.conf.d
.sudo vi /etc/ld.so.conf.d/custom-python.conf
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>
Salve o novo arquivo e feche o editor.
Execute
ldconfig
e verifique selibpython3.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.
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.
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:
Instale o SQL Server 2019 para Linux. Você pode instalar o SQL Server no Red Hat Enterprise Linux (RHEL), no SUSE Linux Enterprise Server (SLES) e no Ubuntu. Para obter mais informações, confira as diretrizes de instalação do SQL Server em Linux.
Faça a atualização para a CU (atualização cumulativa) 3 ou posterior do SQL Server 2019. Siga estas etapas:
Configure os repositórios para atualizações cumulativas. Para obter mais informações, confira Configurar repositórios para instalar e atualizar o SQL Server em Linux.
Atualize o pacote mssql-server para a atualização cumulativa mais recente. Para obter mais informações, confira a seção Atualizar o SQL Server nas diretrizes de instalação do SQL Server em Linux.
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.
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
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
Abra o arquivo com o systemctl
sudo systemctl edit mssql-launchpadd
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>"
Salve o arquivo e feche o editor.
Depois, verifique se libpython3.7m.so.1.0
pode ser carregado.
Crie um arquivo custom-python.conf em
/etc/ld.so.conf.d
.sudo vi /etc/ld.so.conf.d/custom-python.conf
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>
Salve o novo arquivo e feche o editor.
Execute
ldconfig
e verifique selibpython3.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.
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.
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:
Instale o SQL Server 2019 para Linux. Você pode instalar o SQL Server no Red Hat Enterprise Linux (RHEL), no SUSE Linux Enterprise Server (SLES) e no Ubuntu. Para obter mais informações, confira as diretrizes de instalação do SQL Server em Linux.
Faça a atualização para a CU (atualização cumulativa) 3 ou posterior do SQL Server 2019. Siga estas etapas:
Configure os repositórios para atualizações cumulativas. Para obter mais informações, confira Configurar repositórios para instalar e atualizar o SQL Server em Linux.
Atualize o pacote mssql-server para a atualização cumulativa mais recente. Para obter mais informações, confira a seção Atualizar o SQL Server nas diretrizes de instalação do SQL Server em Linux.
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.
Instale o Python 3.7 no servidor.
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
Abra o arquivo com o systemctl
sudo systemctl edit mssql-launchpadd
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>"
Salve o arquivo e feche o editor.
Depois, verifique se libpython3.7m.so.1.0
pode ser carregado.
Crie um arquivo custom-python.conf em
/etc/ld.so.conf.d
.sudo vi /etc/ld.so.conf.d/custom-python.conf
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>
Salve o novo arquivo e feche o editor.
Execute
ldconfig
e verifique selibpython3.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.
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.
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)'