Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : SQL Server 2019 (15.x) et versions
ultérieures d’Azure SQL Managed Instance
Cet article décrit comment utiliser les fonctions du paquet sqlmlutils pour installer de nouveaux paquets Python sur une instance de Machine Learning Services sur SQL Server. Vous pouvez utiliser les packages que vous installez dans des scripts Python exécutés dans la base de données via l’instruction T-SQL sp_execute_external_script.
Cet article explique comment utiliser les fonctions du package sqlmlutils pour installer de nouveaux packages Python sur une instance d’Azure SQL Managed Instance Machine Learning Services. Vous pouvez utiliser les packages que vous installez dans des scripts Python qui s’exécutent dans la base de données à l’aide de l’instruction T-SQL sp_execute_external_script.
Note
Vous ne pouvez pas mettre à jour ou désinstaller les paquets préinstallés sur une instance de SQL Managed Instance Machine Learning Services. Pour afficher la liste des packages actuellement installés, consultez la Liste de tous les packages Python installés.
Pour plus d’informations sur l’emplacement des packages et les chemins d’installation, consultez Obtenir des informations sur les packages Python.
Note
Utilisez le paquet sqlmlutils décrit dans cet article pour ajouter des paquets Python à SQL Server 2019 ou une version ultérieure. Pour SQL Server 2017 et antérieur, consultez Installer des packages avec des outils Python.
Prérequis
- SQL Server Machine Learning Services installés avec l’option de langage Python.
Python installé sur l’ordinateur client que vous utilisez pour vous connecter à SQL Server. Vous pouvez exécuter des scripts depuis la ligne de commande, ou utiliser un environnement de développement Python comme Visual Studio Code avec l’extension Python.
La version de Python sur l’ordinateur client doit correspondre à celle de Python sur le serveur, et les paquets que vous installez doivent être compatibles avec la version de Python que vous possédez. Pour connaître la version de Python fournie avec chaque version de SQL Server, consultez Versions de Python et de R.
Pour vérifier la version de Python sur une instance SQL Server déterminée, utilisez la commande T-SQL suivante.
EXECUTE sp_execute_external_script @language = N'Python', @script = N' import sys print(sys.version) 'Extension MSSQL pour Visual Studio Code installée sur l’ordinateur client que vous utilisez pour vous connecter à SQL Server. Vous pouvez utiliser d’autres outils de gestion ou de requête de base de données.
Autres considérations
La bibliothèque de paquets Python se trouve dans le dossier Program Files de votre instance SQL Server. Par défaut, installer dans ce dossier nécessite des autorisations administrateur. Pour plus d’informations, consultez Emplacement de la bibliothèque de packages.
L’installation du package est spécifique à l’instance SQL, à la base de données et à l’utilisateur que vous spécifiez dans les informations de connexion que vous fournissez à sqlmlutils. Pour utiliser le paquet dans plusieurs instances SQL ou bases de données, ou pour différents utilisateurs, installez le paquet pour chacune. L’exception est un package installé dans un cadre public , qui est partagé avec tous les utilisateurs. SQLMLUTILS sélectionne par défaut l’étendue publique uniquement lorsque vous vous connectez en tant que membre du
sysadminrôle serveur, et la portée privée sinon. Pour effectuer l’installation dans la portée publique en tant qu’autre principal, passezscope=sqlmlutils.Scope.public_scope()àinstall, ce qui nécessite le rôle de base de donnéesdb_owner. Si un utilisateur installe une version plus récente d’un paquet public, le paquet public n’est pas affecté, mais cet utilisateur a accès à la version plus récente.Avant d’ajouter un package, déterminez si le package est adapté à l’environnement SQL Server.
Utilisez Python dans la base de données pour les tâches bénéficiant d’une intégration étroite avec le moteur de base de données, comme l’apprentissage automatique, plutôt que pour les tâches qui se contentent d’interroger la base de données.
Si vous ajoutez des packages qui exercent trop de pression de calcul sur le serveur, les performances en souffrent.
Dans un environnement SQL Server renforcé, évitez les types de paquets suivants :
- Les packages qui nécessitent un accès réseau
- Les packages qui nécessitent un accès au système de fichiers élevé
- Les packages utilisés pour le développement Web ou d’autres tâches qui ne bénéficient pas de l’exécution dans SQL Server
Vous ne pouvez pas installer le paquet Python tensorflow avec sqlmlutils. Pour plus d’informations ainsi qu’une solution de contournement, consultez Problèmes connus dans SQL Server Machine Learning Services.
Installer sqlmlutils sur l’ordinateur client
Pour utiliser sqlmlutils, vous devez d’abord l’installer sur l’ordinateur client que vous utilisez pour vous connecter à SQL Server.
Installer sqlmlutils en ligne
Si l’ordinateur client a accès à Internet, installez sqlmlutils en utilisant pip :
pip install sqlmlutils
Installer sqlmlutils hors connexion
Si l’ordinateur client n’a pas accès à Internet, installez sqlmlutils à partir d’un fichier téléchargé :
Assurez-vous d’avoir un pip installé. Pour plus d’informations, voir installation de pip.
Téléchargez le dernier fichier sqlmlutils depuis la page des versions de sqlmlutils sur l’ordinateur client. Ne décompressez pas le fichier.
Ouvrez une invite de commande et exécutez la commande suivante pour installer le paquet sqlmlutils . Remplace le chemin complet vers le fichier que tu as téléchargé. Cet exemple suppose que le fichier téléchargé est
c:\temp\sqlmlutils-1.0.0.zip.pip install --upgrade --upgrade-strategy only-if-needed c:\temp\sqlmlutils-1.0.0.zip
Ajouter un package Python sur SQL Server
En utilisant sqlmlutils, vous pouvez ajouter des paquets Python à une instance SQL puis les utiliser dans du code Python qui s’exécute dans cette instance. sqlmlutils utilise CREATE EXTERNAL LIBRARY pour installer le package ainsi que chacune de ses dépendances.
L’exemple suivant ajoute le paquet text-tools à SQL Server.
Ajouter le package en ligne
Si l’ordinateur client que vous utilisez pour vous connecter à SQL Server a accès à Internet, vous pouvez utiliser sqlmlutils pour trouver le paquet text-tools et les dépendances en ligne, puis installer le paquet à distance sur une instance SQL Server.
Sur l’ordinateur client, ouvrez Python ou un environnement Python.
Utilisez les commandes suivantes pour installer le package text-tools. Remplacez vos propres informations de connexion de base de données SQL Server (si vous utilisez l’authentification Windows, vous n’avez pas besoin des paramètres
uidetpwd).
Sur l’ordinateur client, ouvrez Python ou un environnement Python.
Utilisez les commandes suivantes pour installer le package text-tools. Remplacez les valeurs existantes par vos propres informations de connexion à la base de données SQL Server. Passez également le nom d’un pilote ODBC installé sur l’ordinateur client, comme
driver="ODBC Driver 18 for SQL Server", car le nom du pilote utilisé par défaut par sqlmlutils s’applique uniquement à Windows.
import sqlmlutils
connection = sqlmlutils.ConnectionInfo(server="server", database="database", uid="username", pwd="password")
sqlmlutils.SQLPackageManager(connection).install("text-tools")
Ajouter le package hors connexion
Si l'ordinateur client que vous utilisez pour vous connecter à SQL Server n'a pas de connexion internet, utilisez pip sur un ordinateur qui en a pour télécharger le package dans un dossier local. Vous copiez ensuite le dossier sur l’ordinateur client et installez le paquet hors ligne.
Note
Cette procédure fonctionne pour un package sans dépendances.
SQLPackageManager.install() résout les dépendances de PyPI même lorsque vous passez un fichier local .whl , donc pour ajouter un paquet qui a des dépendances, utilisez un ordinateur client avec accès à Internet et suivez Ajouter le paquet en ligne.
Sur un ordinateur avec accès à Internet
Ouvrez une invite de commandes et exécutez la commande suivante pour créer un dossier local qui contient le package text-tools. Cet exemple crée le dossier
c:\temp\text-tools.pip download text-tools -d c:\temp\text-toolsCopiez le dossier
text-toolssur l’ordinateur client. L’exemple suivant suppose que vous l’avez copié dansc:\temp\packages\text-tools.
Sur l’ordinateur client
Utilisez sqlmlutils pour installer le package (fichier .whl) que pip a téléchargé dans le dossier local.
Dans cet exemple, text-tools n’a aucune dépendance, donc le text-tools dossier contient un seul fichier.
Exécutez le script Python suivant. Remplacez le chemin du fichier, le nom du package et vos propres informations de connexion de base de données SQL Server (si vous utilisez l’authentification Windows, vous n’avez pas besoin des paramètres uid et pwd).
Exécutez le script Python suivant. Remplacez le chemin du fichier, le nom du package et vos propres informations de connexion de base de données SQL Server. Passez également le nom d’un pilote ODBC installé sur l’ordinateur client, comme driver="ODBC Driver 18 for SQL Server", car le nom du pilote utilisé par défaut par sqlmlutils s’applique uniquement à Windows.
import sqlmlutils
connection = sqlmlutils.ConnectionInfo(server="yourserver", database="yourdatabase", uid="username", pwd="password")
sqlmlutils.SQLPackageManager(connection).install("text_tools-1.0.0-py3-none-any.whl")
Utiliser le package
Vous pouvez maintenant utiliser le package dans un script Python dans SQL Server. Par exemple :
EXECUTE sp_execute_external_script
@language = N'Python',
@script = N'
from text_tools.finders import find_best_string
corpus = "Lorem Ipsum text"
query = "Ipsum"
first_match = find_best_string(query, corpus)
print(first_match)
'
Supprimer le package de SQL Server
Pour supprimer le package text-tools, exécutez la commande Python suivante sur l’ordinateur client, en utilisant la même variable de connexion que vous avez définie précédemment.
sqlmlutils.SQLPackageManager(connection).uninstall("text-tools")
Autres fonctions sqlmlutils
Le paquet sqlmlutils contient plusieurs fonctions pour gérer des paquets Python, ainsi que pour créer, gérer et exécuter des procédures stockées et des requêtes dans un SQL Server. Pour plus d’informations, voir le fichier Python README de sqlmlutils.
Pour en savoir plus sur une fonction sqlmlutils, utilisez la fonction help de Python. Par exemple :
import sqlmlutils
help(sqlmlutils.SQLPackageManager.install)