Installer un CLR personnalisé Python pour SQL Server

S’applique à : SQL Server 2019 (15.x)

Découvrez comment installer un runtime Python personnalisé pour l’exécution de scripts Python externes avec SQL Server sur :

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

Le runtime personnalisé peut exécuter des scripts de Machine Learning et utilise les extensions de langage SQL Server.

Utilisez votre propre version du runtime Python avec SQL Server, au lieu de celle par défaut installée avec SQL Server Machine Learning Services.

À compter de SQL Server 2022 (16.x), les runtimes pour R, Python et Java ne sont plus installés avec le programme d’installation de SQL. Au lieu de cela, installez les runtimes et packages personnalisés Python souhaités. Pour plus d’informations, consultez Installer SQL Server 2022 Machine Learning Services (Python et R) sur Windows ou Installer SQL Server Machine Learning Services (Python et R) sur Linux.

Prérequis

Avant d’installer un runtime Python personnalisé, installez ce qui suit :

Installer les extensions de langage

Notes

Si vous avez Machine Learning Services installé sur SQL Server 2019, les extensions de langage sont déjà installées et vous pouvez ignorer cette étape.

Suivez les étapes ci-dessous pour installer les Extensions de langage SQL Server, qui sont utilisées pour le runtime personnalisé Python.

  1. Démarrez l’Assistant Installation de SQL Server 2019.

  2. Sous l’onglet Installation, sélectionnez Nouvelle installation autonome de SQL Server ou ajout de fonctionnalités à une installation existante.

  3. Dans la page Sélection de fonctionnalités , sélectionnez les options suivantes :

    • Services Moteur de base de données

      Pour utiliser les extensions de langage avec SQL Server, vous devez installer une instance du moteur de base de données. Vous pouvez utiliser une instance nouvelle ou existante.

    • Machine Learning Services et extensions de langage

      Sélectionnez Machine Learning Services et extensions de langage. Ne sélectionnez pas Python, car vous installerez le runtime python personnalisé ultérieurement.

      SQL Server 2019 Language Extensions setup.

  4. Dans la page Prêt pour l’installation, vérifiez que ces sélections sont incluses, puis choisissez Installer.

    • Services Moteur de base de données
    • Machine Learning Services et extensions de langage
  5. Une fois l’installation terminée, redémarrez la machine si vous y êtes invité.

Important

Si vous installez une nouvelle instance de SQL Server 2019 avec les extensions de langage, installez la mise à jour cumulative (CU) 3 ou une version ultérieure avant de passer à l’étape suivante.

Installer Python

L’extension de langage Python utilisée pour le runtime python personnalisé prend actuellement en charge Python 3.7 uniquement. Si vous souhaitez utiliser une autre version de Python, suivez les instructions du référentiel GitHub de l’extension de langage Python pour modifier et régénérer l’extension.

  1. Téléchargez Python 3.7 pour Windows et exécutez le programme d’installation sur le serveur.

  2. Sélectionnez Add Python 3.7 to PATH (Ajouter Python 3.7 à PATH), puis Customize installation (Personnaliser l’installation).

    Python 3.7 installation - Add Python 3.7 to PATH

  3. Sous Optional Features (Fonctionnalités facultatives), laissez les valeurs par défaut et sélectionnez Next (Suivant).

  4. Sélectionnez Install for all users (Installer pour tous les utilisateurs) et notez l’emplacement de l’installation.

    Python 3.7 installation - Install for all users

  5. Sélectionnez Installer.

Installer pandas

Installez le package pandas pour Python à partir d’une invite de commandes avec élévation de privilèges (Exécuter en tant qu’administrateur) :

python.exe -m pip install pandas

Accordez l’accès au dossier Python

Exécutez les commandes icacls suivantes à partir d’une nouvelle invite de commandes avec élévation de privilèges pour accorder l’accès READ & EXECUTE à l’emplacement d’installation de Python au service SQL Server Launchpad et au SID S-1-15-2-1 (ALL_APPLICATION_PACKAGES).

Les exemples ci-dessous utilisent l’emplacement d’installation de Python suivant : C:\Program Files\Python37. Si votre emplacement est différent, modifiez-le dans la commande.

  1. Accordez des autorisations pour le nom d’utilisateur du service SQL Server Launchpad.

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

    Pour une instance nommée, la commande est icacls "C:\Program Files\Python37" /grant "NT Service\MSSQLLAUNCHPAD$SQL01":(OI)(CI)RX /T pour une instance appelée SQL01.

  2. Accordez des autorisations à SID S-1-15-2-1.

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

    La commande précédente accorde des autorisations au SID de l’ordinateur S-1-15-2-1, ce qui équivaut à ALL APPLICATION PACKAGES sur une version en anglais de Windows. Vous pouvez également utiliser icacls "C:\Program Files\Python37" /grant "ALL APPLICATION PACKAGES":(OI)(CI)RX /T sur une version en anglais de Windows.

Redémarrer SQL Server Launchpad

Procédez comme suit pour redémarrer le service SQL Server Launchpad.

  1. Ouvrez le Gestionnaire de configuration SQL Server.

  2. Sous Services SQL Server, cliquez avec le bouton droit sur SQL Server Launchpad (MSSQLSERVER) et sélectionnez Redémarrer. Si vous utilisez une instance nommée, le nom de l’instance est indiqué à la place de (MSSQLSERVER) .

Inscrivez l’extension de langage

Procédez comme suit pour télécharger et inscrire l’extension de langage Python, qui est utilisée pour le runtime personnalisé Python.

  1. Téléchargez le fichier python-lang-extension-windows-release.zip à partir du dépôt GitHub d’extensions de langage SQL Server.

    Vous pouvez également utiliser la version debug (python-lang-extension-windows-debug.zip) dans un environnement de développement ou de test. La version debug fournit des informations de journalisation détaillées pour examiner les erreurs, et n’est pas recommandée pour les environnements de production.

  2. Utilisez Azure Data Studio pour vous connecter à votre instance SQL Server et exécutez la commande T-SQL suivante pour inscrire l’extension de langage Python avec CREATE EXTERNAL LANGUAGE.

    Modifiez le chemin dans cette instruction pour refléter l’emplacement du fichier zip de l’extension de langage téléchargé (python-lang-extension-windows-release.zip) et l’emplacement de votre installation de 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
    

    Exécutez l’instruction pour chaque base de données dans laquelle vous souhaitez utiliser l’extension de langage Python.

    Notes

    Python est un mot réservé et ne peut pas être utilisé comme nom pour un nouveau nom de langue externe. Utilisez un autre nom à la place. Par exemple, l’instruction ci-dessus utilise myPython.

Prérequis

Avant d’installer un runtime Python personnalisé, installez ce qui suit :

Installer les extensions de langage

Notes

Si vous avez Machine Learning Services installé sur SQL Server 2019, le package mssql-server-extensibility pour les extensions de langage est déjà installée et vous pouvez ignorer cette étape.

Exécutez les commandes ci-dessous pour installer les extensions de langage SQL Server sur Ubuntu Linux, qui sont utilisées pour le runtime Python personnalisé.

  1. Si possible, exécutez cette commande pour actualiser les packages sur le système avant l’installation.

    # Install as root or sudo
    sudo apt-get update
    
  2. Ubuntu n’a peut-être pas l’option de transport https apt. Pour l’installer, exécutez la commande suivante.

    # Install as root or sudo
    apt-get install apt-transport-https
    
  3. Installez mssql-server-extensibility à l’aide de cette commande.

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

Installez Python 3.7 et pandas

L’extension de langage Python utilisée pour le runtime Python personnalisé prend uniquement en charge Python 3.7 pour l’instant. Si vous souhaitez utiliser une autre version de Python, suivez les instructions du référentiel GitHub de l’extension de langage Python pour modifier et régénérer l’extension.

  1. Exécutez les commandes ci-dessous pour installer 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. Exécutez la commande ci-dessous pour installer le package pandas.

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

Installation personnalisée de Python

Notes

Si vous avez installé Python 3.7 à l’emplacement par défaut de /usr/lib/python3.7, vous pouvez ignorer cette section et passer à la section Inscrire l’extension de langage.

Si vous avez créé votre propre version de Python 3.7, utilisez les commandes suivantes pour faire savoir à SQL Server votre installation personnalisée.

Ajouter une variable d’environnement

Modifiez d’abord le service mssql-launchpad pour ajouter la variable d’environnement PYTHONHOME au fichier /etc/systemd/system/mssql-launchpadd.service.d/override.conf

  1. Ouvrez le fichier avec systemctl

    sudo systemctl edit mssql-launchpadd
    
  2. Insérez le texte suivant dans le fichier /etc/systemd/system/mssql-launchpadd.service.d/override.conf qui s’ouvre. Définissez la valeur de PYTHONHOME sur le chemin d’installation de Python personnalisé.

    [Service]
    Environment="PYTHONHOME=<path to the python3.7 lib>"
    
  3. Enregistrez le fichier et fermez l’éditeur.

Ensuite, assurez-vous que libpython3.7m.so.1.0 peut être chargé.

  1. Créez un fichier custom-python.conf dans /etc/ld.so.conf.d.

    sudo vi /etc/ld.so.conf.d/custom-python.conf
    
  2. Dans le fichier qui s’ouvre, ajoutez le chemin d’accès à libpython3.7m.so.1.0 de l’installation Python personnalisée.

    <path to the python3.7 lib>
    
  3. Enregistrez le nouveau fichier et fermez l’éditeur.

  4. Exécutez ldconfig et vérifiez que libpython3.7m.so.1.0 peut être chargé en exécutant la commande suivante et en vérifiant que toutes les bibliothèques dépendantes peuvent être trouvées.

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

Accordez l’accès au dossier Python

Définissez l’option datadirectories de la section extensibility du fichier /var/opt/mssql/mssql.conf avec l’installation personnalisée de Python.

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

Redémarrez mssql-launchpadd

Exécutez la commande suivante pour redémarrer mssql-launchpadd.

sudo systemctl restart mssql-launchpadd

Inscrivez l’extension de langage

Procédez comme suit pour télécharger et inscrire l’extension de langage Python, qui est utilisée pour le runtime personnalisé Python.

  1. Téléchargez le fichier python-lang-extension-linux-release.zip à partir du dépôt GitHub d’extensions de langage SQL Server.

    Vous pouvez également utiliser la version debug (python-lang-extension-linux-debug.zip) dans un environnement de développement ou de test. La version debug fournit des informations de journalisation détaillées pour examiner les erreurs, et n’est pas recommandée pour les environnements de production.

  2. Utilisez Azure Data Studio pour vous connecter à votre instance SQL Server et exécutez la commande T-SQL suivante pour inscrire l’extension de langage Python avec CREATE EXTERNAL LANGUAGE.

    Modifiez le chemin dans cette instruction pour refléter l’emplacement du fichier zip de l’extension de langage téléchargé (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
    

    Exécutez l’instruction pour chaque base de données dans laquelle vous souhaitez utiliser l’extension de langage Python.

    Notes

    Python est un mot réservé et ne peut pas être utilisé comme nom pour un nouveau nom de langue externe. Utilisez un autre nom à la place. Par exemple, l’instruction ci-dessus utilise myPython.

Prérequis

Avant d’installer un runtime Python personnalisé, installez ce qui suit :

Installer les extensions de langage

Notes

Si vous avez Machine Learning Services installé sur SQL Server 2019, le package mssql-server-extensibility pour les extensions de langage est déjà installée et vous pouvez ignorer cette étape.

Exécutez la commande ci-dessous pour installer les extensions de langage SQL Server sur RHEL (Red Hat Enterprise Linux), qui sont utilisées pour le runtime Python personnalisé.

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

Installez Python 3.7 et pandas

L’extension de langage Python utilisée pour le runtime Python personnalisé prend uniquement en charge Python 3.7 pour l’instant. Si vous souhaitez utiliser une autre version de Python, suivez les instructions du référentiel GitHub de l’extension de langage Python pour modifier et régénérer l’extension.

  1. Exécutez les commandes ci-dessous pour installer 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. Exécutez la commande ci-dessous pour installer le package pandas.

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

Installation personnalisée de Python

Notes

Si vous avez installé Python 3.7 à l’emplacement par défaut de /usr/lib/python3.7, vous pouvez ignorer cette section et passer à la section Inscrire l’extension de langage.

Si vous avez créé votre propre version de Python 3.7, utilisez les commandes suivantes pour faire savoir à SQL Server votre installation personnalisée.

Ajouter une variable d’environnement

Modifiez d’abord le service mssql-launchpad pour ajouter la variable d’environnement PYTHONHOME au fichier /etc/systemd/system/mssql-launchpadd.service.d/override.conf

  1. Ouvrez le fichier avec systemctl

    sudo systemctl edit mssql-launchpadd
    
  2. Insérez le texte suivant dans le fichier /etc/systemd/system/mssql-launchpadd.service.d/override.conf qui s’ouvre. Définissez la valeur de PYTHONHOME sur le chemin d’installation de Python personnalisé.

    [Service]
    Environment="PYTHONHOME=<path to the python3.7 lib>"
    
  3. Enregistrez le fichier et fermez l’éditeur.

Ensuite, assurez-vous que libpython3.7m.so.1.0 peut être chargé.

  1. Créez un fichier custom-python.conf dans /etc/ld.so.conf.d.

    sudo vi /etc/ld.so.conf.d/custom-python.conf
    
  2. Dans le fichier qui s’ouvre, ajoutez le chemin d’accès à libpython3.7m.so.1.0 de l’installation Python personnalisée.

    <path to the python3.7 lib>
    
  3. Enregistrez le nouveau fichier et fermez l’éditeur.

  4. Exécutez ldconfig et vérifiez que libpython3.7m.so.1.0 peut être chargé en exécutant la commande suivante et en vérifiant que toutes les bibliothèques dépendantes peuvent être trouvées.

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

Accordez l’accès au dossier Python

Définissez l’option datadirectories de la section extensibility du fichier /var/opt/mssql/mssql.conf avec l’installation personnalisée de Python.

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

Redémarrez mssql-launchpadd

Exécutez la commande suivante pour redémarrer mssql-launchpadd.

sudo systemctl restart mssql-launchpadd

Inscrivez l’extension de langage

Procédez comme suit pour télécharger et inscrire l’extension de langage Python, qui est utilisée pour le runtime personnalisé Python.

  1. Téléchargez le fichier python-lang-extension-linux-release.zip à partir du dépôt GitHub d’extensions de langage SQL Server.

    Vous pouvez également utiliser la version debug (python-lang-extension-linux-debug.zip) dans un environnement de développement ou de test. La version debug fournit des informations de journalisation détaillées pour examiner les erreurs, et n’est pas recommandée pour les environnements de production.

  2. Utilisez Azure Data Studio pour vous connecter à votre instance SQL Server et exécutez la commande T-SQL suivante pour inscrire l’extension de langage Python avec CREATE EXTERNAL LANGUAGE.

    Modifiez le chemin dans cette instruction pour refléter l’emplacement du fichier zip de l’extension de langage téléchargé (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
    

    Exécutez l’instruction pour chaque base de données dans laquelle vous souhaitez utiliser l’extension de langage Python.

    Notes

    Python est un mot réservé et ne peut pas être utilisé comme nom pour un nouveau nom de langue externe. Utilisez un autre nom à la place. Par exemple, l’instruction ci-dessus utilise myPython.

Prérequis

Avant d’installer un runtime Python personnalisé, installez ce qui suit :

Installer les extensions de langage

Notes

Si vous avez Machine Learning Services installé sur SQL Server 2019, le package mssql-server-extensibility pour les extensions de langage est déjà installée et vous pouvez ignorer cette étape.

Exécutez la commande ci-dessous pour installer les extensions de langage SQL Server sur SLES (SUSE Linux Enterprise Server), qui sont utilisées pour le runtime Python personnalisé.

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

Installez Python 3.7 et pandas

L’extension de langage Python utilisée pour le runtime Python personnalisé prend uniquement en charge Python 3.7 pour l’instant. Si vous souhaitez utiliser une autre version de Python, suivez les instructions du référentiel GitHub de l’extension de langage Python pour modifier et régénérer l’extension.

  1. Installez Python 3.7 sur le serveur.

  2. Exécutez la commande ci-dessous pour installer le package pandas.

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

Installation personnalisée de Python

Notes

Si vous avez installé Python 3.7 à l’emplacement par défaut de /usr/lib/python3.7, vous pouvez ignorer cette section et passer à la section Inscrire l’extension de langage.

Si vous avez créé votre propre version de Python 3.7, utilisez les commandes suivantes pour faire savoir à SQL Server votre installation personnalisée.

Ajouter une variable d’environnement

Modifiez d’abord le service mssql-launchpad pour ajouter la variable d’environnement PYTHONHOME au fichier /etc/systemd/system/mssql-launchpadd.service.d/override.conf

  1. Ouvrez le fichier avec systemctl

    sudo systemctl edit mssql-launchpadd
    
  2. Insérez le texte suivant dans le fichier /etc/systemd/system/mssql-launchpadd.service.d/override.conf qui s’ouvre. Définissez la valeur de PYTHONHOME sur le chemin d’installation de Python personnalisé.

    [Service]
    Environment="PYTHONHOME=<path to the python3.7 lib>"
    
  3. Enregistrez le fichier et fermez l’éditeur.

Ensuite, assurez-vous que libpython3.7m.so.1.0 peut être chargé.

  1. Créez un fichier custom-python.conf dans /etc/ld.so.conf.d.

    sudo vi /etc/ld.so.conf.d/custom-python.conf
    
  2. Dans le fichier qui s’ouvre, ajoutez le chemin d’accès à libpython3.7m.so.1.0 de l’installation Python personnalisée.

    <path to the python3.7 lib>
    
  3. Enregistrez le nouveau fichier et fermez l’éditeur.

  4. Exécutez ldconfig et vérifiez que libpython3.7m.so.1.0 peut être chargé en exécutant la commande suivante et en vérifiant que toutes les bibliothèques dépendantes peuvent être trouvées.

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

Accordez l’accès au dossier Python

Définissez l’option datadirectories de la section extensibility du fichier /var/opt/mssql/mssql.conf avec l’installation personnalisée de Python.

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

Redémarrez mssql-launchpadd

Exécutez la commande suivante pour redémarrer mssql-launchpadd.

sudo systemctl restart mssql-launchpadd

Inscrivez l’extension de langage

Procédez comme suit pour télécharger et inscrire l’extension de langage Python, qui est utilisée pour le runtime personnalisé Python.

  1. Téléchargez le fichier python-lang-extension-linux-release.zip à partir du dépôt GitHub d’extensions de langage SQL Server.

    Vous pouvez également utiliser la version debug (python-lang-extension-linux-debug.zip) dans un environnement de développement ou de test. La version debug fournit des informations de journalisation détaillées pour examiner les erreurs, et n’est pas recommandée pour les environnements de production.

  2. Utilisez Azure Data Studio pour vous connecter à votre instance SQL Server et exécutez la commande T-SQL suivante pour inscrire l’extension de langage Python avec CREATE EXTERNAL LANGUAGE.

    Modifiez le chemin dans cette instruction pour refléter l’emplacement du fichier zip de l’extension de langage téléchargé (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
    

    Exécutez l’instruction pour chaque base de données dans laquelle vous souhaitez utiliser l’extension de langage Python.

    Notes

    Python est un mot réservé et ne peut pas être utilisé comme nom pour un nouveau nom de langue externe. Utilisez un autre nom à la place. Par exemple, l’instruction ci-dessus utilise myPython.

Activer les scripts externes

Vous pouvez exécuter des scripts externes Python avec la procédure stockée sp_execute_external script.

Pour activer les scripts externes, utilisez Azure Data Studio pour exécuter l’instruction ci-dessous.

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

Vérifier l'installation

Utilisez le script SQL suivant pour vérifier l’installation et les fonctionnalités du runtime personnalisé Python. Dans l’exemple de script ci-dessous, myPython est utilisé comme nom de langage car le nom de langage par défaut Python ne peut pas être fourni pour un runtime personnalisé.

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

Étapes suivantes