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.
Cet article vous aide à résoudre une erreur qui se produit lorsque vous essayez d’exécuter mssql-conf le programme d’installation à l’aide du module Python. Cet article décrit également les exigences de Python pour Microsoft SQL Server sur Linux et fournit une solution de contournement si vous utilisez une version anticipée de Python lorsque vous essayez de configurer SQL Server sur Linux.
S’applique à : SQL Server 2019 sur Linux
Symptômes
Lorsque vous essayez d’exécuter mssql-conf le programme d’installation après avoir installé Microsoft SQL Server 2019, vous recevez un message d’erreur « Objet module n’a pas d’exécution d’attribut » si vous utilisez une version Python antérieure à la version 3.5.
Examinez les scénarios suivants :
Vous installez SQL Server sur Linux en suivant les étapes décrites dans les instructions d’installation pour SQL Server sur Linux.
Vous essayez d’exécuter
/opt/mssql/bin/mssql-confle programme d’installation. Toutefois, vous rencontrez une dépendance de module :
testslesvm2:~ # /opt/mssql/bin/mssql-conf setup
Traceback (most recent call last):
File "/opt/mssql/bin/../lib/mssql-conf/mssql-conf.py", line 17, in <module>
import mssqlad
File "/opt/mssql/lib/mssql-conf/mssqlad.py", line 15, in <module>
import pyadutil
File "/opt/mssql/lib/mssql-conf/pyadutil.py", line 6, in <module>
import typing
ImportError: No module named 'typing'
Vous pouvez également recevoir le message d’erreur suivant, même après avoir résolu le problème de dépendance de module « saisie » :
testslesvm2:~ # /opt/mssql/bin/mssql-conf setup
Warning: could not create log file for mssql-conf at /var/opt/mssql/log/mssql-conf/mssql-conf.log.
Traceback (most recent call last):
File "/opt/mssql/bin/../lib/mssql-conf/mssql-conf.py", line 597, in <module>
main()
File "/opt/mssql/bin/../lib/mssql-conf/mssql-conf.py", line 593, in main
processCommands()
File "/opt/mssql/bin/../lib/mssql-conf/mssql-conf.py", line 310, in processCommands
COMMAND_TABLE[args.which]()
File "/opt/mssql/bin/../lib/mssql-conf/mssql-conf.py", line 93, in handleSetup
mssqlconfhelper.setupSqlServer(eulaAccepted, noprompt=args.noprompt)
File "/opt/mssql/lib/mssql-conf/mssqlconfhelper.py", line 964, in setupSqlServer
if not checkInstall():
File "/opt/mssql/lib/mssql-conf/mssqlconfhelper.py", line 934, in checkInstall
return runScript(checkInstallScript, runAsRoot) == 0
File "/opt/mssql/lib/mssql-conf/mssqlconfhelper.py", line 915, in runScript
process = subprocess.run([pathToScript], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
AttributeError: 'module' object has no attribute 'run'
Note
L’erreur mssql-conf d’installation peut se produire sur les systèmes sur lesquels la plateforme Microsoft SQL Server sur Linux prise en charge (RHEL, SLES, Ubuntu) inclut Python 3 ou une autre version antérieure à 3.5. Pour plus d’informations sur les plateformes prises en charge par SQL Server sur Linux, consultez Plateforme prise en charge.
Cause
L’erreur se produit car SQL Server 2019 et mssql-conf le code s’appuient sur les fonctions Python 3.5+ .
Solution de contournement
Vous avez deux options pour contourner ce problème :
Mettez à niveau Python 3 vers la version 3.5 ou ultérieure. Définissez le système de sorte que lorsque vous exécutez la
/usr/bin/env python3 -Vcommande, il pointe vers Python 3.5 ou 3.5+.Remarque : Nous avons observé que certaines fonctions système qui s’appuient sur les versions de Python antérieures à la version 3.5 arrêtent de fonctionner après cette mise à niveau. Pour éviter ce problème, utilisez l’option suivante.
Créez un lien symbolique dans votre session qui pointe Python 3 vers Python 3.5 ou 3.5+, puis exécutez les
mssql-confcommandes pour configurer SQL Server. Pour plus d'informations, voir la section suivante.
Créer un lien symbolique (lien logiciel) de Python 3
Suivez ces étapes pour créer un lien symbolique spécifique à une session dans lequel Python 3 pointe vers Python 3.5 ou une version ultérieure, puis exécutez la mssql-conf configuration.
Installez Python 3.5 ou une version ultérieure. Dans cet exemple, installez Python 3.6 :
zypper in python36Installez SQL Server.
sudo zypper addrepo -fc https://packages.microsoft.com/config/sles/12/mssql-server-2019.repo sudo zypper --gpg-auto-import-keys refresh sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc sudo zypper install -y mssql-serverBasculez vers l’utilisateur racine, créez le lien symbolique dans n’importe quel dossier, puis ajoutez le chemin d’accès actuel à
$PATH. Par exemple, le lien symbolique /usr/bin/env python3 -V pointe vers Python 3.6 au lieu de Python 3.4, comme illustré dans l’extrait de code suivant :$sudo su testslesvm2:~ #:> sudo ln -s /usr/bin/python3.6 python3 testslesvm2:~ # > PATH=$(pwd):$PATH testslesvm2:~ # ll total 4 -rw------- 1 root root 982 Feb 9 20:03 .bash_history drwx------ 2 root root 111 Jan 26 08:50 .gnupg drwx------ 2 root root 29 Feb 9 19:27 .ssh drwxr-xr-x 2 root root 6 Jun 27 2017 bin lrwxrwxrwx 1 root root 18 Feb 9 19:47 python3 -> /usr/bin/python3.6 testslesvm2:~ # /usr/bin/env python3 -V Python 3.6.15Exécutez le programme d’installation
mssql-confou toute autremssql-confcommande basée sur les commandes suivantes :/opt/mssql/bin/mssql-conf setupSi vous souhaitez exécuter la
mssql-confcommande ultérieurement pour configurer SQL Server, basculez vers l’utilisateur racine, puis exécutez laPATH=$(pwd):$PATHcommande pour ajouter le chemin actuel à la$PATHvariable d’environnement. Exécutez ensuite la commande, comme indiqué à l’étapemssql-conf4.
Voir aussi
Étant donné que Python 3.4 a déjà atteint son état EOL (fin de vie) et ne recevra plus de mises à jour de sécurité, nous vous recommandons d’utiliser une version plus récente et prise en charge de Python. Pour plus d’informations, consultez Python | endoflife.date.
Exclusion de responsabilité sur les coordonnées externes
Microsoft fournit des informations de contacts externes afin de vous aider à obtenir un support technique sur ce sujet. Ces informations de contact peuvent changer sans préavis. Microsoft ne garantit pas l’exactitude des informations concernant les sociétés externes.