Delen via


Een aangepaste Python-runtime voor SQL Server installeren

Van toepassing op: SQL Server 2019 (15.x)

Meer informatie over het installeren van een aangepaste Python-runtime voor het uitvoeren van externe Python-scripts met SQL Server op:

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

De aangepaste runtime kan machine learning-scripts uitvoeren en maakt gebruik van de SQL Server-taalextensies.

Gebruik uw eigen versie van de Python-runtime met SQL Server, in plaats van de standaardruntimeversie die is geïnstalleerd met SQL Server Machine Learning Services.

Vanaf SQL Server 2022 (16.x) worden runtimes voor R, Python en Java niet meer geïnstalleerd met SQL Setup. Installeer in plaats daarvan uw gewenste aangepaste Python-runtime(s) en pakketten. Zie SQL Server 2022 Machine Learning Services (Python en R) installeren in Windows of SQL Server Machine Learning Services (Python en R) installeren op Linux voor meer informatie.

Vereiste voorwaarden

Voordat u een aangepaste Python-runtime installeert, moet u het volgende installeren:

Taalextensies installeren

Opmerking

Als Machine Learning Services is geïnstalleerd op SQL Server 2019, zijn taalextensies al geïnstalleerd en kunt u deze stap overslaan.

Volg de onderstaande stappen om SQL Server Language Extensions te installeren. Deze wordt gebruikt voor de aangepaste Python-runtime.

  1. Start de installatiewizard voor SQL Server 2019.

  2. Selecteer op het tabblad Installatiede optie Nieuwe zelfstandige installatie van SQL Server of voeg functies toe aan een bestaande installatie.

  3. Selecteer deze opties op de pagina Functieselectie :

    • Database Engine Services

      Als u taalextensies wilt gebruiken met SQL Server, moet u een exemplaar van de database-engine installeren. U kunt een nieuw exemplaar of een bestaand exemplaar gebruiken.

    • Machine Learning Services en taaluitbreidingen

      Selecteer Machine Learning Services en taalextensies. Selecteer Python niet, omdat u de aangepaste Python-runtime later installeert.

      Installatie van SQL Server 2019 Language Extensions.

  4. Controleer op de pagina Gereed om te installeren of deze selecties zijn opgenomen en selecteer Installeren.

    • Database-Enginediensten
    • Machine Learning Services en taalextensies
  5. Nadat de installatie is voltooid, start u de computer opnieuw op als u hiertoe wordt gevraagd.

Belangrijk

Als u een nieuw exemplaar van SQL Server 2019 met taalextensies installeert, installeert u de cumulatieve update (CU) 3 of hoger voordat u verdergaat met de volgende stap.

Python installeren

De Python-taalextensie die wordt gebruikt voor de aangepaste Python-runtime ondersteunt momenteel alleen Python 3.7. Als u een andere versie van Python wilt gebruiken, volgt u de instructie in de GitHub-opslagplaats van de Python-taalextensie om de extensie te wijzigen en opnieuw te bouwen.

  1. Download Python 3.7 voor Windows en voer setup uit op de server.

  2. Selecteer Python 3.7 toevoegen aan PATH en selecteer vervolgens Installatie aanpassen.

    Installatie van Python 3.7 - Python 3.7 toevoegen aan PATH

  3. Laat onder Optionele functies de standaardwaarden staan en selecteer Volgende.

  4. Selecteer Installeren voor alle gebruikers en noteer de installatielocatie.

    Installatie van Python 3.7 - Installeren voor alle gebruikers

  5. Selecteer Installeren.

Pandas installeren

Installeer het Pandas-pakket voor Python vanaf een opdrachtprompt met verhoogde bevoegdheid (als administrator uitvoeren):

python.exe -m pip install pandas

Toegang verlenen tot de Python-map

Voer de volgende icacls-opdrachten uit vanaf een nieuwe opdrachtprompt met verhoogde bevoegdheid om READ & EXECUTE toegang te verlenen tot de Python-installatielocatie voor SQL Server Launchpad Service en SID S-1-15-2-1 (ALL_APPLICATION_PACKAGES).

In de onderstaande voorbeelden wordt de Python-installatielocatie gebruikt als C:\Program Files\Python37. Als uw locatie anders is, wijzigt u deze in de opdracht.

  1. Geef machtigingen voor de gebruikersnaam van de SQL Server Launchpad-service.

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

    Voor een benoemde instantie is de opdracht icacls "C:\Program Files\Python37" /grant "NT Service\MSSQLLAUNCHPAD$SQL01":(OI)(CI)RX /T voor een instantie genaamd SQL01.

  2. Geef machtigingen aan SID S-1-15-2-1.

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

    De voorgaande opdracht verleent machtigingen aan de computer SID S-1-15-2-1, wat gelijk is aan ALLE TOEPASSINGSPAKKETTEN op een Engelse versie van Windows. U kunt ook een Engelse versie van Windows gebruiken icacls "C:\Program Files\Python37" /grant "ALL APPLICATION PACKAGES":(OI)(CI)RX /T .

Start SQL Server Launchpad opnieuw op

Volg deze stappen om de SQL Server Launchpad-service opnieuw op te starten.

  1. Open SQL Server Configuration Manager.

  2. Klik onder SQL Server Services met de rechtermuisknop op SQL Server Launchpad (MSSQLSERVER) en selecteer Opnieuw opstarten. Als u een benoemd exemplaar gebruikt, wordt de exemplaarnaam weergegeven in plaats van (MSSQLSERVER).

Taalextensie registreren

Volg deze stappen om de Python-taalextensie te downloaden en te registreren, die wordt gebruikt voor de aangepaste Python-runtime.

  1. Download het python-lang-extension-windows-release.zip-bestand uit de GitHub-opslagplaats sql Server Language Extensions.

    U kunt ook de foutopsporingsversie (python-lang-extension-windows-debug.zip) gebruiken in een ontwikkel- of testomgeving. De debugversie biedt uitgebreide logboekinformatie om eventuele fouten te onderzoeken, maar wordt niet aanbevolen voor productieomgevingen.

  2. Gebruik Azure Data Studio om verbinding te maken met uw SQL Server-exemplaar en voer de volgende T-SQL-opdracht uit om de Python-taalextensie te registreren bij CREATE EXTERNAL LANGUAGE.

    Wijzig het pad in deze instructie zodat deze overeenkomt met de locatie van het zip-bestand met de gedownloade taalextensie (python-lang-extension-windows-release.zip) en de locatie van uw Python-installatie (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
    

    Voer de instructie uit voor elke database waarin u de Python-taalextensie wilt gebruiken.

    Opmerking

    Python is een gereserveerd woord en kan niet worden gebruikt als de naam voor een nieuwe externe taalnaam. Gebruik in plaats daarvan een andere naam. De bovenstaande instructie maakt bijvoorbeeld gebruik van myPython.

Vereiste voorwaarden

Voordat u een aangepaste Python-runtime installeert, moet u de volgende vereisten installeren:

Taalextensies installeren

Opmerking

Als Machine Learning Services is geïnstalleerd op SQL Server 2019, is het mssql-server-extensibility-pakket voor taalextensies al geïnstalleerd en kunt u deze stap overslaan.

Voer de onderstaande opdrachten uit om SQL Server Language Extensions te installeren op Ubuntu Linux, die wordt gebruikt voor de aangepaste Python-runtime.

  1. Voer indien mogelijk deze opdracht uit om de pakketten op het systeem vóór de installatie te vernieuwen.

    # Install as root or sudo
    sudo apt-get update
    
  2. Ubuntu heeft mogelijk niet de https apt-transportoptie. Voer deze opdracht uit om deze te installeren.

    # Install as root or sudo
    apt-get install apt-transport-https
    
  3. Installeer mssql-server-extensibility met deze opdracht.

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

Python 3.7 en pandas installeren

De Python-taalextensie die wordt gebruikt voor de aangepaste Python-runtime ondersteunt momenteel alleen Python 3.7 . Als u een andere versie van Python wilt gebruiken, volgt u de instructie in de GitHub-opslagplaats van de Python-taalextensie om de extensie te wijzigen en opnieuw te bouwen.

  1. Voer de onderstaande opdrachten uit om Python 3.7 te installeren.

    # 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. Voer de onderstaande opdracht uit om het Pandas-pakket te installeren

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

Aangepaste installatie van Python

Opmerking

Als u Python 3.7 op de standaardlocatie /usr/lib/python3.7hebt geïnstalleerd, kunt u deze sectie overslaan en verdergaan met de sectie Taalextensie registreren .

Als u uw eigen versie van Python 3.7 hebt gemaakt, gebruikt u de volgende opdrachten om SQL Server uw aangepaste installatie te laten weten.

Omgevingsvariabele toevoegen

Bewerk eerst de mssql-launchpadd-service om de omgevingsvariabele PYTHONHOME toe te voegen aan het bestand /etc/systemd/system/mssql-launchpadd.service.d/override.conf

  1. Het bestand openen met systemctl

    sudo systemctl edit mssql-launchpadd
    
  2. Voeg de volgende tekst in het /etc/systemd/system/mssql-launchpadd.service.d/override.conf bestand dat wordt geopend. Stel de waarde van PYTHONHOME in op het aangepaste Python-installatiepad.

    [Service]
    Environment="PYTHONHOME=<path to the python3.7 lib>"
    
  3. Sla het bestand op en sluit de editor.

Controleer daarna of libpython3.7m.so.1.0 kan worden geladen.

  1. Maak een custom-python.conf-bestand in /etc/ld.so.conf.d.

    sudo vi /etc/ld.so.conf.d/custom-python.conf
    
  2. Voeg in het bestand dat wordt geopend het pad toe aan libpython3.7m.so.1.0 van de aangepaste Python-installatie.

    <path to the python3.7 lib>
    
  3. Sla het nieuwe bestand op en sluit de editor.

  4. Voer ldconfig uit en controleer of libpython3.7m.so.1.0 kan worden geladen door de volgende opdrachten uit te voeren en te controleren of alle afhankelijke bibliotheken gevonden kunnen worden.

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

Toegang verlenen tot de Python-map

Stel de datadirectories optie in de sectie uitbreidbaarheid van het /var/opt/mssql/mssql.conf bestand in op de aangepaste Python-installatie.

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

Mssql-launchpadd opnieuw starten

Voer de volgende opdracht uit om mssql-launchpadd opnieuw te starten.

sudo systemctl restart mssql-launchpadd

Taalextensie registreren

Volg deze stappen om de Python-taalextensie te downloaden en te registreren, die wordt gebruikt voor de aangepaste Python-runtime.

  1. Download het python-lang-extension-linux-release.zip-bestand uit de GitHub-opslagplaats sql Server Language Extensions.

    U kunt ook de foutopsporingsversie (python-lang-extension-linux-debug.zip) gebruiken in een ontwikkel- of testomgeving. De debugversie biedt uitgebreide logboekinformatie om eventuele fouten te onderzoeken, maar wordt niet aanbevolen voor productieomgevingen.

  2. Gebruik Azure Data Studio om verbinding te maken met uw SQL Server-exemplaar en voer de volgende T-SQL-opdracht uit om de Python-taalextensie te registreren bij CREATE EXTERNAL LANGUAGE.

    Wijzig het pad in deze instructie zodat deze overeenkomt met de locatie van het zip-bestand met de gedownloade taalextensie (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
    

    Voer de instructie uit voor elke database waarin u de Python-taalextensie wilt gebruiken.

    Opmerking

    Python is een gereserveerd woord en kan niet worden gebruikt als de naam voor een nieuwe externe taalnaam. Gebruik in plaats daarvan een andere naam. De bovenstaande instructie maakt bijvoorbeeld gebruik van myPython.

Vereiste voorwaarden

Voordat u een aangepaste Python-runtime installeert, moet u de volgende vereisten installeren:

Taalextensies installeren

Opmerking

Als Machine Learning Services is geïnstalleerd op SQL Server 2019, is het mssql-server-extensibility-pakket voor taalextensies al geïnstalleerd en kunt u deze stap overslaan.

Voer de onderstaande opdracht uit om SQL Server Language Extensions te installeren op Red Hat Enterprise Linux (RHEL), dat wordt gebruikt voor de aangepaste Python-runtime.

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

Installeren van Python 3.7 en pandas

De Python-taalextensie die wordt gebruikt voor de aangepaste Python-runtime ondersteunt momenteel alleen Python 3.7 . Als u een andere versie van Python wilt gebruiken, volgt u de instructie in de GitHub-opslagplaats van de Python-taalextensie om de extensie te wijzigen en opnieuw te bouwen.

  1. Voer de onderstaande opdrachten uit om Python 3.7 te installeren.

    # 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. Voer de onderstaande opdracht uit om het Pandas-pakket te installeren

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

Aangepaste installatie van Python

Opmerking

Als u Python 3.7 op de standaardlocatie /usr/lib/python3.7hebt geïnstalleerd, kunt u deze sectie overslaan en verdergaan met de sectie Taalextensie registreren .

Als u uw eigen versie van Python 3.7 hebt gemaakt, gebruikt u de volgende opdrachten om SQL Server uw aangepaste installatie te laten weten.

Omgevingsvariabele toevoegen

Bewerk eerst de mssql-launchpadd-service om de omgevingsvariabele PYTHONHOME toe te voegen aan het bestand /etc/systemd/system/mssql-launchpadd.service.d/override.conf

  1. Het bestand openen met systemctl

    sudo systemctl edit mssql-launchpadd
    
  2. Voeg de volgende tekst in het /etc/systemd/system/mssql-launchpadd.service.d/override.conf bestand dat wordt geopend. Stel de waarde van PYTHONHOME in op het aangepaste Python-installatiepad.

    [Service]
    Environment="PYTHONHOME=<path to the python3.7 lib>"
    
  3. Sla het bestand op en sluit de editor.

Controleer daarna of libpython3.7m.so.1.0 kan worden geladen.

  1. Maak een custom-python.conf-bestand in /etc/ld.so.conf.d.

    sudo vi /etc/ld.so.conf.d/custom-python.conf
    
  2. Voeg in het bestand dat wordt geopend het pad toe aan libpython3.7m.so.1.0 van de aangepaste Python-installatie.

    <path to the python3.7 lib>
    
  3. Sla het nieuwe bestand op en sluit de editor.

  4. Voer ldconfig uit en controleer of libpython3.7m.so.1.0 kan worden geladen door de volgende opdrachten uit te voeren en na te gaan of alle afhankelijke bibliotheken kunnen worden gevonden.

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

Toegang verlenen tot Python-map

Stel de datadirectories optie in de sectie uitbreidbaarheid van het /var/opt/mssql/mssql.conf bestand in op de aangepaste Python-installatie.

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

Mssql-launchpadd opnieuw starten

Voer de volgende opdracht uit om mssql-launchpadd opnieuw te starten.

sudo systemctl restart mssql-launchpadd

Taalextensie registreren

Volg deze stappen om de Python-taalextensie te downloaden en te registreren, die wordt gebruikt voor de aangepaste Python-runtime.

  1. Download het python-lang-extension-linux-release.zip-bestand uit de GitHub-opslagplaats sql Server Language Extensions.

    U kunt ook de foutopsporingsversie (python-lang-extension-linux-debug.zip) gebruiken in een ontwikkel- of testomgeving. De debugversie biedt uitgebreide logboekinformatie om eventuele fouten te onderzoeken, maar wordt niet aanbevolen voor productieomgevingen.

  2. Gebruik Azure Data Studio om verbinding te maken met uw SQL Server-exemplaar en voer de volgende T-SQL-opdracht uit om de Python-taalextensie te registreren bij CREATE EXTERNAL LANGUAGE.

    Wijzig het pad in deze instructie zodat deze overeenkomt met de locatie van het zip-bestand met de gedownloade taalextensie (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
    

    Voer de instructie uit voor elke database waarin u de Python-taalextensie wilt gebruiken.

    Opmerking

    Python is een gereserveerd woord en kan niet worden gebruikt als de naam voor een nieuwe externe taalnaam. Gebruik in plaats daarvan een andere naam. De bovenstaande instructie maakt bijvoorbeeld gebruik van myPython.

Vereiste voorwaarden

Voordat u een aangepaste Python-runtime installeert, moet u de volgende vereisten installeren:

Taalextensies installeren

Opmerking

Als Machine Learning Services is geïnstalleerd op SQL Server 2019, is het mssql-server-extensibility-pakket voor taalextensies al geïnstalleerd en kunt u deze stap overslaan.

Voer de onderstaande opdracht uit om SQL Server Language Extensions te installeren op SUSE Linux Enterprise Server (SLES), die wordt gebruikt voor de aangepaste Python-runtime.

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

Python 3.7 en pandas installeren

De Python-taalextensie die wordt gebruikt voor de aangepaste Python-runtime ondersteunt momenteel alleen Python 3.7 . Als u een andere versie van Python wilt gebruiken, volgt u de instructie in de GitHub-opslagplaats van de Python-taalextensie om de extensie te wijzigen en opnieuw te bouwen.

  1. Installeer Python 3.7 op de server.

  2. Voer de onderstaande opdracht uit om het Pandas-pakket te installeren

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

Aangepaste installatie van Python

Opmerking

Als u Python 3.7 op de standaardlocatie /usr/lib/python3.7hebt geïnstalleerd, kunt u deze sectie overslaan en verdergaan met de sectie Taalextensie registreren .

Als u uw eigen versie van Python 3.7 hebt gemaakt, gebruikt u de volgende opdrachten om SQL Server uw aangepaste installatie te laten weten.

Omgevingsvariabele toevoegen

Bewerk eerst de mssql-launchpadd-service om de omgevingsvariabele PYTHONHOME toe te voegen aan het bestand /etc/systemd/system/mssql-launchpadd.service.d/override.conf

  1. Het bestand openen met systemctl

    sudo systemctl edit mssql-launchpadd
    
  2. Voeg de volgende tekst in het /etc/systemd/system/mssql-launchpadd.service.d/override.conf bestand dat wordt geopend. Stel de waarde van PYTHONHOME in op het aangepaste Python-installatiepad.

    [Service]
    Environment="PYTHONHOME=<path to the python3.7 lib>"
    
  3. Sla het bestand op en sluit de editor.

Controleer daarna of libpython3.7m.so.1.0 kan worden geladen.

  1. Maak een custom-python.conf-bestand in /etc/ld.so.conf.d.

    sudo vi /etc/ld.so.conf.d/custom-python.conf
    
  2. Voeg in het bestand dat wordt geopend het pad toe aan libpython3.7m.so.1.0 van de aangepaste Python-installatie.

    <path to the python3.7 lib>
    
  3. Sla het nieuwe bestand op en sluit de editor.

  4. Voer ldconfig uit en controleer of libpython3.7m.so.1.0 kan worden geladen door de volgende opdrachten uit te voeren en te controleren of alle afhankelijke bibliotheken kunnen worden gevonden.

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

Toegang verlenen tot de Python-map

Stel de datadirectories optie in de sectie uitbreidbaarheid van het /var/opt/mssql/mssql.conf bestand in op de aangepaste Python-installatie.

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

Mssql-launchpadd opnieuw starten

Voer de volgende opdracht uit om mssql-launchpadd opnieuw te starten.

sudo systemctl restart mssql-launchpadd

Taalextensie registreren

Volg deze stappen om de Python-taalextensie te downloaden en te registreren, die wordt gebruikt voor de aangepaste Python-runtime.

  1. Download het python-lang-extension-linux-release.zip-bestand uit de GitHub-opslagplaats sql Server Language Extensions.

    U kunt ook de foutopsporingsversie (python-lang-extension-linux-debug.zip) gebruiken in een ontwikkel- of testomgeving. De debugversie biedt uitgebreide logboekinformatie om eventuele fouten te onderzoeken, maar wordt niet aanbevolen voor productieomgevingen.

  2. Gebruik Azure Data Studio om verbinding te maken met uw SQL Server-exemplaar en voer de volgende T-SQL-opdracht uit om de Python-taalextensie te registreren bij CREATE EXTERNAL LANGUAGE.

    Wijzig het pad in deze instructie zodat deze overeenkomt met de locatie van het zip-bestand met de gedownloade taalextensie (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
    

    Voer de instructie uit voor elke database waarin u de Python-taalextensie wilt gebruiken.

    Opmerking

    Python is een gereserveerd woord en kan niet worden gebruikt als de naam voor een nieuwe externe taalnaam. Gebruik in plaats daarvan een andere naam. De bovenstaande instructie maakt bijvoorbeeld gebruik van myPython.

Externe scripts inschakelen

U kunt een externe Python-scripts uitvoeren met de opgeslagen procedure sp_execute_external script.

Als u externe scripts wilt inschakelen, gebruikt u Azure Data Studio om de onderstaande instructie uit te voeren.

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

Installatie controleren

Gebruik het volgende SQL-script om de installatie en functionaliteit van de aangepaste Python-runtime te controleren. In het onderstaande voorbeeldscript myPython wordt deze gebruikt als de naam van de taal, omdat de standaardtaalnaam Python niet kan worden opgegeven voor een aangepaste runtime.

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

Volgende stappen