Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este artículo le ayuda a resolver un error que se produce al intentar ejecutar mssql-conf la instalación mediante el módulo de Python. En este artículo también se describen los requisitos de Python para Microsoft SQL Server en Linux y se proporciona una solución alternativa si usa una versión temprana de Python al intentar configurar SQL Server en Linux.
Se aplica a: SQL Server 2019 en Linux
Síntomas
Al intentar ejecutar el mssql-conf programa de instalación después de instalar Microsoft SQL Server 2019, recibirá un mensaje de error "Module object has not attribute run" (No se ha ejecutado ningún atributo) si usa una versión de Python anterior a la 3.5.
Considere los casos siguientes:
Instale SQL Server en Linux siguiendo los pasos descritos en Guía de instalación para SQL Server en Linux.
Intenta ejecutar el
/opt/mssql/bin/mssql-confprograma de instalación. Sin embargo, experimenta una dependencia de módulo:
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'
También puede recibir el siguiente mensaje de error incluso después de corregir el problema de dependencia del módulo de escritura:
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'
Nota:
El mssql-conf error de configuración puede producirse en los sistemas en los que la plataforma compatible con el Microsoft SQL Server en Linux (RHEL, SLES, Ubuntu) incluye Python 3 u otra versión anterior a la 3.5. Para obtener más información sobre las plataformas compatibles con SQL Server en Linux, consulte Plataforma admitida.
Causa
El error se produce porque SQL Server 2019 y mssql-conf el código dependen de las funciones de Python 3.5+.
Solución alternativa
Tiene dos opciones para solucionar este problema:
Actualice Python 3 a 3.5 o una versión posterior. Establezca el sistema para que, al ejecutar el
/usr/bin/env python3 -Vcomando, apunte a Python 3.5 o 3.5+.Nota: Hemos observado que algunas funciones del sistema que dependen de versiones de Python anteriores a la 3.5 dejan de funcionar después de esta actualización. Para evitar este problema, use la opción siguiente.
Cree un vínculo simbólico en la sesión que apunte Python 3 a Python 3.5 o 3.5+ y, a continuación, ejecute los
mssql-confcomandos para configurar SQL Server. Para obtener más información, consulte la siguiente sección.
Creación de un vínculo simbólico (vínculo temporal) de Python 3
Siga estos pasos para crear un vínculo simbólico específico de la sesión en el que Python 3 apunta a Python 3.5 o una versión posterior y, a continuación, ejecute la mssql-conf instalación.
Instale Python 3.5 o una versión posterior. En este ejemplo, instale Python 3.6:
zypper in python36Instale 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-serverCambie al usuario raíz, cree el vínculo simbólico en cualquier carpeta y agregue la ruta de acceso actual a
$PATH. Por ejemplo, el vínculo simbólico /usr/bin/env python3 -V apunta a Python 3.6 en lugar de Python 3.4, como se muestra en el siguiente fragmento de código:$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.15Ejecute el programa de
mssql-confinstalación o cualquier otromssql-confcomando basado en:/opt/mssql/bin/mssql-conf setupSi quiere ejecutar el
mssql-confcomando en el futuro para configurar SQL Server, cambie al usuario raíz y, a continuación, ejecute elPATH=$(pwd):$PATHcomando para agregar la ruta de acceso actual a la variable de$PATHentorno. A continuación, ejecute el comando , como se muestra en elmssql-confpaso 4.
Consulte también
Dado que Python 3.4 ya ha alcanzado su estado de EOL (fin de vida) y ya no recibirá actualizaciones de seguridad, se recomienda usar una versión compatible y más reciente de Python. Para más información, consulte Python | endoflife.date.
Aviso de declinación de responsabilidades sobre la información de contacto de terceros
Microsoft proporciona información de contacto de otros proveedores para ayudarle a encontrar información adicional sobre este tema. Esta información de contacto puede cambiar sin previo aviso. Microsoft no garantiza la precisión de esta información de contacto de terceros.