Installare un runtime personalizzato di Python per SQL Server
Si applica a: SQL Server 2019 (15.x)
Informazioni su come installare un runtime personalizzato di Python per l'esecuzione di script Python esterni con SQL Server in:
- Finestre
- Ubuntu Linux
- Red Hat Enterprise Linux (RHEL)
- SUSE Linux Enterprise Server (SLES)
Il runtime personalizzato può eseguire script di Machine Learning e usa le estensioni del linguaggio di SQL Server.
Usare la propria versione del runtime di Python con SQL Server, invece della versione predefinita del runtime installata con SQL Server Machine Learning Services.
A partire da SQL Server 2022 (16.x), i runtime per R, Python e Java non vengono più installati con l'installazione di SQL. Occorre invece installare i runtime e i pacchetti personalizzati per Python che si intende usare. Per altre informazioni, vedere Installare Machine Learning Services (Python e R) per SQL Server 2022 in Windows o Installare SQL Server Machine Learning Services (Python e R) in Linux.
Prerequisiti
Prima di installare un runtime personalizzato di Python:
- Se si usa un'istanza di SQL Server esistente, installare l'aggiornamento cumulativo 3 o versione successiva per SQL Server 2019.
Installare le estensioni del linguaggio
Nota
Se Machine Learning Services è installato in SQL Server 2019, le estensioni del linguaggio sono già installate ed è possibile ignorare questo passaggio.
Attenersi alla procedura seguente per installare le Estensioni del linguaggio di SQL Server, che vengono usate per il runtime personalizzato di Python.
Avviare l'Installazione guidata di SQL Server 2019.
Nella scheda Installazione selezionare Nuova installazione autonoma di SQL Server o aggiunta di funzionalità a un'installazione esistente.
Nella pagina Selezione funzionalità selezionare queste opzioni:
Servizi motore di database
Per usare le estensioni del linguaggio con SQL Server, è necessario installare un'istanza del motore di database. È possibile usare un'istanza nuova o esistente.
Machine Learning Services ed estensioni del linguaggio
Selezionare Machine Learning Services ed estensioni del linguaggio. Non selezionare Python, perché in seguito verrà installato il runtime di Python personalizzato.
Nella pagina Inizio installazione verificare che le opzioni selezionate siano incluse e selezionare Installa.
- Servizi motore di database
- Machine Learning Services ed estensioni del linguaggio
Al termine dell'installazione, riavviare il computer, se richiesto.
Importante
Se si installa una nuova istanza di SQL Server 2019 con le estensioni del linguaggio, installare l'aggiornamento cumulativo (CU) 3 o versione successiva prima di continuare con il passaggio successivo.
Installare Python
L'estensione del linguaggio Python usata per il runtime Python personalizzato attualmente supporta solo Python 3.7. Se si vuole usare una versione diversa di Python, seguire le istruzioni nel repository GitHub Estensione del linguaggio Python per modificare e ricompilare l'estensione.
Scaricare Python 3.7 per Windows ed eseguire il programma di installazione nel server.
Selezionare Aggiungi Python 3.7 a PATH e quindi selezionare Personalizza installazione.
In Funzionalità facoltative lasciare le impostazioni predefinite e selezionare Avanti.
Selezionare Installa per tutti gli utenti e prendere nota del percorso di installazione.
Selezionare Installa.
Installare pandas
Installare il pacchetto pandas per Python da un prompt dei comandi con privilegi elevati (Esegui come amministratore):
python.exe -m pip install pandas
Concedere l'accesso alla cartella di Python
Eseguire i comandi icacls seguenti da un nuovo prompt dei comandi con privilegi elevati per concedere l'accesso in lettura ed esecuzione al percorso di installazione di Python al Servizio Launchpad di SQL Server e al SID S-1-15-2-1 (ALL_APPLICATION_PACKAGES).
Gli esempi riportati di seguito usano il percorso di installazione di Python C:\Program Files\Python37
. Se il percorso della propria installazione è diverso, cambiarlo nel comando.
Concedere le autorizzazioni a nome utente del servizio Launchpad di SQL Server.
icacls "C:\Program Files\Python37" /grant "NT Service\MSSQLLAUNCHPAD":(OI)(CI)RX /T
Per l'istanza denominata, il comando sarà
icacls "C:\Program Files\Python37" /grant "NT Service\MSSQLLAUNCHPAD$SQL01":(OI)(CI)RX /T
per un'istanza denominata SQL01.Concedere le autorizzazioni al SID S-1-15-2-1.
icacls "C:\Program Files\Python37" /grant *S-1-15-2-1:(OI)(CI)RX /T
Il comando precedente concede le autorizzazioni al SID del computer S-1-15-2-1, che equivale a ALL APPLICATION PACKAGES (TUTTI I PACCHETTI APPLICAZIONI) in una versione di Windows in inglese. In alternativa è possibile usare
icacls "C:\Program Files\Python37" /grant "ALL APPLICATION PACKAGES":(OI)(CI)RX /T
in una versione di Windows in inglese.
Riavviare Launchpad di SQL Server
Per riavviare il servizio Launchpad di SQL Server, attenersi alla seguente procedura.
In Servizi SQL Server, fare clic con il pulsante destro del mouse su Launchpad di SQL Server (MSSQLSERVER) e selezionare Riavvia. Se si usa un'istanza denominata, il nome dell'istanza verrà visualizzato al posto di (MSSQLSERVER).
Registrare l'estensione del linguaggio
Seguire questa procedura per scaricare e registrare l'estensione del linguaggio Python, che viene usata per il runtime personalizzato di Python.
Scaricare il file python-lang-extension-windows-release.zip dal repository GitHub per le estensioni del linguaggio di SQL Server.
In alternativa, è possibile usare la versione di debug (python-lang-extension-windows-debug.zip) in un ambiente di sviluppo o di test. La versione di debug fornisce informazioni di registrazione dettagliate per esaminare eventuali errori e non è consigliata per gli ambienti di produzione.
Usare Azure Data Studio per connettersi all'istanza di SQL Server ed eseguire il comando T-SQL seguente per registrare l'estensione del linguaggio Python con CREATE EXTERNAL LANGUAGE.
Modificare il percorso riportato in questa istruzione in modo che corrisponda al percorso del file ZIP dell'estensione del linguaggio scaricato (python-lang-extension-windows-release.zip) e al percorso dell'installazione di 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
Eseguire l'istruzione per ogni database in cui si desidera usare l'estensione del linguaggio Python.
Nota
Python è una parola riservata e non può essere usata come nome per un nuovo nome di linguaggio esterno. Usare un altro nome. Ad esempio, l'istruzione precedente usa myPython.
Prerequisiti
Prima di installare un runtime personalizzato di Python:
Installare SQL Server 2019 per Linux. È possibile installare SQL Server in Red Hat Enterprise Linux (RHEL), SUSE Linux Enterprise Server (SLES) e Ubuntu. Per altre informazioni, vedere le Linee guida per l'installazione di SQL Server in Linux.
Installare l'aggiornamento cumulativo (CU) 3 o versione successiva per SQL Server 2019. Seguire questa procedura:
Configurare i repository per gli aggiornamenti cumulativi. Per altre informazioni, vedere Configurare i repository per l'installazione e l'aggiornamento di SQL Server in Linux.
Aggiornare il pacchetto mssql-server all'aggiornamento cumulativo più recente. Per altre informazioni, vedere la sezione sull'aggiornamento di SQL Server nelle linee guida per l'installazione di SQL Server in Linux.
Installare le estensioni del linguaggio
Nota
Se Machine Learning Services è installato in SQL Server 2019, il pacchetto mssql-server-extensibility per le estensioni del linguaggio è già installato ed è possibile ignorare questo passaggio.
Eseguire i comandi seguenti per installare le estensioni del linguaggio di SQL Server in Ubuntu Linux, che viene usato per il runtime personalizzato di Python.
Se possibile, eseguire questo comando per aggiornare i pacchetti nel sistema prima dell'installazione.
# Install as root or sudo sudo apt-get update
Ubuntu potrebbe non avere l'opzione di trasporto https apt. Per installarla, usare questo comando.
# Install as root or sudo apt-get install apt-transport-https
Installare mssql-server-extensibility con questo comando.
# Install as root or sudo sudo apt-get install mssql-server-extensibility
Installare Python 3.7 e pandas
L'estensione del linguaggio Python usata per il runtime Python personalizzato attualmente supporta solo Python 3.7. Se si vuole usare una versione diversa di Python, seguire le istruzioni nel repository GitHub Estensione del linguaggio Python per modificare e ricompilare l'estensione.
Eseguire i comandi seguenti per installare 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
Eseguire il comando seguente per installare il pacchetto pandas
# Install pandas to /usr/lib: sudo python3.7 -m pip install pandas -t /usr/lib/python3.7/dist-packages
Installazione personalizzata di Python
Nota
Se è stato installato Python 3.7 nel percorso predefinito di /usr/lib/python3.7
, è possibile ignorare questa sezione e passare alla sezione Registrare l'estensione del linguaggio.
Se è stata creata una versione personalizzata di Python 3.7, usare i comandi seguenti per comunicare a SQL Server l'installazione personalizzata.
Aggiungere una variabile di ambiente
In primo luogo, modificare il servizio mssql-launchpadd per aggiungere la variabile di ambiente PYTHONHOME al file /etc/systemd/system/mssql-launchpadd.service.d/override.conf
Aprire il file con systemctl
sudo systemctl edit mssql-launchpadd
Inserire il testo seguente nel file
/etc/systemd/system/mssql-launchpadd.service.d/override.conf
che si apre. Impostare il valore di PYTHONHOME sul percorso di installazione personalizzato di Python.[Service] Environment="PYTHONHOME=<path to the python3.7 lib>"
Salvare il file e chiudere l'editor.
Quindi, verificare che libpython3.7m.so.1.0
possa essere caricato.
Creare un file python.conf personalizzato in
/etc/ld.so.conf.d
.sudo vi /etc/ld.so.conf.d/custom-python.conf
Nel file che si apre aggiungere il percorso libpython3.7m.so.1.0 dall'installazione personalizzata di Python.
<path to the python3.7 lib>
Salvare il nuovo file e chiudere l'editor.
Eseguire
ldconfig
e verificare che sia possibile caricarelibpython3.7m.so.1.0
eseguendo i comandi seguenti e verificando che tutte le librerie dipendenti siano disponibili.sudo ldconfig ldd <path to the python3.7 lib>/libpython3.7m.so.1.0
Concedere l'accesso alla cartella di Python
Impostare l'opzione datadirectories
nella sezione extensibility del file /var/opt/mssql/mssql.conf
sull'installazione personalizzata di Python.
sudo /opt/mssql/bin/mssql-conf set extensibility.datadirectories <path to python3.7>
Riavviare mssql-launchpadd
Eseguire il comando seguente per riavviare mssql-launchpadd.
sudo systemctl restart mssql-launchpadd
Registrare l'estensione del linguaggio
Seguire questa procedura per scaricare e registrare l'estensione del linguaggio Python, che viene usata per il runtime personalizzato di Python.
Scaricare il file python-lang-extension-linux-release.zip dal repository GitHub per le estensioni del linguaggio di SQL Server.
In alternativa, è possibile usare la versione di debug (python-lang-extension-linux-debug.zip) in un ambiente di sviluppo o di test. La versione di debug fornisce informazioni di registrazione dettagliate per esaminare eventuali errori e non è consigliata per gli ambienti di produzione.
Usare Azure Data Studio per connettersi all'istanza di SQL Server ed eseguire il comando T-SQL seguente per registrare l'estensione del linguaggio Python con CREATE EXTERNAL LANGUAGE.
Modificare il percorso riportato in questa istruzione in modo che corrisponda al percorso del file ZIP dell'estensione del linguaggio scaricato (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
Eseguire l'istruzione per ogni database in cui si desidera usare l'estensione del linguaggio Python.
Nota
Python è una parola riservata e non può essere usata come nome per un nuovo nome di linguaggio esterno. Usare un altro nome. Ad esempio, l'istruzione precedente usa myPython.
Prerequisiti
Prima di installare un runtime personalizzato di Python:
Installare SQL Server 2019 per Linux. È possibile installare SQL Server in Red Hat Enterprise Linux (RHEL), SUSE Linux Enterprise Server (SLES) e Ubuntu. Per altre informazioni, vedere le Linee guida per l'installazione di SQL Server in Linux.
Installare l'aggiornamento cumulativo (CU) 3 o versione successiva per SQL Server 2019. Seguire questa procedura:
Configurare i repository per gli aggiornamenti cumulativi. Per altre informazioni, vedere Configurare i repository per l'installazione e l'aggiornamento di SQL Server in Linux.
Aggiornare il pacchetto mssql-server all'aggiornamento cumulativo più recente. Per altre informazioni, vedere la sezione sull'aggiornamento di SQL Server nelle linee guida per l'installazione di SQL Server in Linux.
Installare le estensioni del linguaggio
Nota
Se Machine Learning Services è installato in SQL Server 2019, il pacchetto mssql-server-extensibility per le estensioni del linguaggio è già installato ed è possibile ignorare questo passaggio.
Eseguire il comando seguente per installare le estensioni del linguaggio di SQL Server in Red Hat Enterprise Linux (RHEL), che viene usato per il runtime personalizzato di Python.
# Install as root or sudo
sudo yum install mssql-server-extensibility
Installare Python 3.7 e pandas
L'estensione del linguaggio Python usata per il runtime Python personalizzato attualmente supporta solo Python 3.7. Se si vuole usare una versione diversa di Python, seguire le istruzioni nel repository GitHub Estensione del linguaggio Python per modificare e ricompilare l'estensione.
Eseguire i comandi seguenti per installare 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
Eseguire il comando seguente per installare il pacchetto pandas
# Install pandas to /usr/lib: sudo python3.7 -m pip install pandas -t /usr/lib/python3.7/dist-packages
Installazione personalizzata di Python
Nota
Se è stato installato Python 3.7 nel percorso predefinito di /usr/lib/python3.7
, è possibile ignorare questa sezione e passare alla sezione Registrare l'estensione del linguaggio.
Se è stata creata una versione personalizzata di Python 3.7, usare i comandi seguenti per comunicare a SQL Server l'installazione personalizzata.
Aggiungere una variabile di ambiente
In primo luogo, modificare il servizio mssql-launchpadd per aggiungere la variabile di ambiente PYTHONHOME al file /etc/systemd/system/mssql-launchpadd.service.d/override.conf
Aprire il file con systemctl
sudo systemctl edit mssql-launchpadd
Inserire il testo seguente nel file
/etc/systemd/system/mssql-launchpadd.service.d/override.conf
che si apre. Impostare il valore di PYTHONHOME sul percorso di installazione personalizzato di Python.[Service] Environment="PYTHONHOME=<path to the python3.7 lib>"
Salvare il file e chiudere l'editor.
Quindi, verificare che libpython3.7m.so.1.0
possa essere caricato.
Creare un file python.conf personalizzato in
/etc/ld.so.conf.d
.sudo vi /etc/ld.so.conf.d/custom-python.conf
Nel file che si apre aggiungere il percorso libpython3.7m.so.1.0 dall'installazione personalizzata di Python.
<path to the python3.7 lib>
Salvare il nuovo file e chiudere l'editor.
Eseguire
ldconfig
e verificare che sia possibile caricarelibpython3.7m.so.1.0
eseguendo i comandi seguenti e verificando che tutte le librerie dipendenti siano disponibili.sudo ldconfig ldd <path to the python3.7 lib>/libpython3.7m.so.1.0
Concedere l'accesso alla cartella di Python
Impostare l'opzione datadirectories
nella sezione extensibility del file /var/opt/mssql/mssql.conf
sull'installazione personalizzata di Python.
sudo /opt/mssql/bin/mssql-conf set extensibility.datadirectories <path to python3.7>
Riavviare mssql-launchpadd
Eseguire il comando seguente per riavviare mssql-launchpadd.
sudo systemctl restart mssql-launchpadd
Registrare l'estensione del linguaggio
Seguire questa procedura per scaricare e registrare l'estensione del linguaggio Python, che viene usata per il runtime personalizzato di Python.
Scaricare il file python-lang-extension-linux-release.zip dal repository GitHub per le estensioni del linguaggio di SQL Server.
In alternativa, è possibile usare la versione di debug (python-lang-extension-linux-debug.zip) in un ambiente di sviluppo o di test. La versione di debug fornisce informazioni di registrazione dettagliate per esaminare eventuali errori e non è consigliata per gli ambienti di produzione.
Usare Azure Data Studio per connettersi all'istanza di SQL Server ed eseguire il comando T-SQL seguente per registrare l'estensione del linguaggio Python con CREATE EXTERNAL LANGUAGE.
Modificare il percorso riportato in questa istruzione in modo che corrisponda al percorso del file ZIP dell'estensione del linguaggio scaricato (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
Eseguire l'istruzione per ogni database in cui si desidera usare l'estensione del linguaggio Python.
Nota
Python è una parola riservata e non può essere usata come nome per un nuovo nome di linguaggio esterno. Usare un altro nome. Ad esempio, l'istruzione precedente usa myPython.
Prerequisiti
Prima di installare un runtime personalizzato di Python:
Installare SQL Server 2019 per Linux. È possibile installare SQL Server in Red Hat Enterprise Linux (RHEL), SUSE Linux Enterprise Server (SLES) e Ubuntu. Per altre informazioni, vedere le Linee guida per l'installazione di SQL Server in Linux.
Installare l'aggiornamento cumulativo (CU) 3 o versione successiva per SQL Server 2019. Seguire questa procedura:
Configurare i repository per gli aggiornamenti cumulativi. Per altre informazioni, vedere Configurare i repository per l'installazione e l'aggiornamento di SQL Server in Linux.
Aggiornare il pacchetto mssql-server all'aggiornamento cumulativo più recente. Per altre informazioni, vedere la sezione sull'aggiornamento di SQL Server nelle linee guida per l'installazione di SQL Server in Linux.
Installare le estensioni del linguaggio
Nota
Se Machine Learning Services è installato in SQL Server 2019, il pacchetto mssql-server-extensibility per le estensioni del linguaggio è già installato ed è possibile ignorare questo passaggio.
Eseguire il comando seguente per installare le estensioni del linguaggio di SQL Server in SUSE Linux Enterprise Server (SLES), che viene usato per il runtime personalizzato di Python.
# Install as root or sudo
sudo zypper install mssql-server-extensibility
Installare Python 3.7 e pandas
L'estensione del linguaggio Python usata per il runtime Python personalizzato attualmente supporta solo Python 3.7. Se si vuole usare una versione diversa di Python, seguire le istruzioni nel repository GitHub Estensione del linguaggio Python per modificare e ricompilare l'estensione.
Installare Python 3.7 sul server.
Eseguire il comando seguente per installare il pacchetto pandas
# Install pandas to /usr/lib: sudo python3.7 -m pip install pandas -t /usr/lib/python3.7/dist-packages
Installazione personalizzata di Python
Nota
Se è stato installato Python 3.7 nel percorso predefinito di /usr/lib/python3.7
, è possibile ignorare questa sezione e passare alla sezione Registrare l'estensione del linguaggio.
Se è stata creata una versione personalizzata di Python 3.7, usare i comandi seguenti per comunicare a SQL Server l'installazione personalizzata.
Aggiungere una variabile di ambiente
In primo luogo, modificare il servizio mssql-launchpadd per aggiungere la variabile di ambiente PYTHONHOME al file /etc/systemd/system/mssql-launchpadd.service.d/override.conf
Aprire il file con systemctl
sudo systemctl edit mssql-launchpadd
Inserire il testo seguente nel file
/etc/systemd/system/mssql-launchpadd.service.d/override.conf
che si apre. Impostare il valore di PYTHONHOME sul percorso di installazione personalizzato di Python.[Service] Environment="PYTHONHOME=<path to the python3.7 lib>"
Salvare il file e chiudere l'editor.
Quindi, verificare che libpython3.7m.so.1.0
possa essere caricato.
Creare un file python.conf personalizzato in
/etc/ld.so.conf.d
.sudo vi /etc/ld.so.conf.d/custom-python.conf
Nel file che si apre aggiungere il percorso libpython3.7m.so.1.0 dall'installazione personalizzata di Python.
<path to the python3.7 lib>
Salvare il nuovo file e chiudere l'editor.
Eseguire
ldconfig
e verificare che sia possibile caricarelibpython3.7m.so.1.0
eseguendo i comandi seguenti e verificando che tutte le librerie dipendenti siano disponibili.sudo ldconfig ldd <path to the python3.7 lib>/libpython3.7m.so.1.0
Concedere l'accesso alla cartella di Python
Impostare l'opzione datadirectories
nella sezione extensibility del file /var/opt/mssql/mssql.conf
sull'installazione personalizzata di Python.
sudo /opt/mssql/bin/mssql-conf set extensibility.datadirectories <path to python3.7>
Riavviare mssql-launchpadd
Eseguire il comando seguente per riavviare mssql-launchpadd.
sudo systemctl restart mssql-launchpadd
Registrare l'estensione del linguaggio
Seguire questa procedura per scaricare e registrare l'estensione del linguaggio Python, che viene usata per il runtime personalizzato di Python.
Scaricare il file python-lang-extension-linux-release.zip dal repository GitHub per le estensioni del linguaggio di SQL Server.
In alternativa, è possibile usare la versione di debug (python-lang-extension-linux-debug.zip) in un ambiente di sviluppo o di test. La versione di debug fornisce informazioni di registrazione dettagliate per esaminare eventuali errori e non è consigliata per gli ambienti di produzione.
Usare Azure Data Studio per connettersi all'istanza di SQL Server ed eseguire il comando T-SQL seguente per registrare l'estensione del linguaggio Python con CREATE EXTERNAL LANGUAGE.
Modificare il percorso riportato in questa istruzione in modo che corrisponda al percorso del file ZIP dell'estensione del linguaggio scaricato (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
Eseguire l'istruzione per ogni database in cui si desidera usare l'estensione del linguaggio Python.
Nota
Python è una parola riservata e non può essere usata come nome per un nuovo nome di linguaggio esterno. Usare un altro nome. Ad esempio, l'istruzione precedente usa myPython.
Abilitare gli script esterni
È possibile eseguire uno script esterno di Python con la stored procedure sp_execute_external script.
Per abilitare gli script esterni, usare Azure Data Studio per eseguire l'istruzione seguente.
sp_configure 'external scripts enabled', 1;
RECONFIGURE WITH OVERRIDE;
Verifica l'installazione
Usare lo script SQL seguente per verificare l'installazione e la funzionalità del runtime personalizzato di Python. Nello script di esempio seguente, myPython
viene usato come nome del linguaggio perché non è possibile specificare il nome Python
di lingua predefinita per un runtime personalizzato.
EXEC sp_execute_external_script
@language =N'myPython',
@script=N'
import sys
print(sys.path)
print(sys.version)
print(sys.executable)'