Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эта статья поможет устранить ошибку, возникающую при попытке запустить mssql-conf
программу установки с помощью модуля Python. В этой статье также описываются требования Python для Microsoft SQL Server на Linux и предоставляется обходное решение, если вы используете раннюю версию Python при попытке настроить SQL Server на Linux.
Область применения: SQL Server 2019 в Linux
Симптомы
При попытке выполнить mssql-conf
настройку после установки Microsoft SQL Server 2019 вы получите сообщение об ошибке "объект модуля не имеет атрибутов запуска", если вы используете версию Python, которая раньше 3.5.
Рассмотрим следующие сценарии.
Чтобы установить SQL Server на Linux, выполните действия, описанные в руководстве по установке SQL Server на Linux.
Вы пытаетесь запустить
/opt/mssql/bin/mssql-conf
программу установки. Однако вы испытываете зависимость модуля:
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'
Вы также можете получить следующее сообщение об ошибке даже после устранения проблемы с зависимостью модуля typeing:
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'
Примечание.
Ошибка mssql-conf
установки может возникать в системах, на которых поддерживается платформа Microsoft SQL Server на Linux (RHEL, SLES, Ubuntu) включает Python 3 или другую версию, которая выше 3.5. Дополнительные сведения о поддерживаемых SQL Server на Linux платформах см. в статье "Поддерживаемые платформы".
Причина
Ошибка возникает, так как SQL Server 2019 и mssql-conf
код используют функции Python 3.5+.
Обходное решение
У вас есть два варианта решения этой проблемы:
Обновите Python 3 до версии 3.5 или более поздней. Установите систему таким образом, чтобы при выполнении
/usr/bin/env python3 -V
команды он указывает на Python 3.5 или 3.5+.Примечание. Мы заметили, что некоторые системные функции, использующие версии Python, которые раньше 3.5 перестают работать после этого обновления. Чтобы избежать этой проблемы, используйте следующий параметр.
Создайте символьную связь в сеансе, который указывает Python 3 на Python 3.5 или 3.5+, а затем выполните
mssql-conf
команды для настройки SQL Server. Для получения дополнительных сведений см. следующий раздел.
Создание симлинки (обратимая ссылка) Python 3
Выполните следующие действия, чтобы создать ссылку для конкретного сеанса, в которой Python 3 указывает на Python 3.5 или более позднюю версию, а затем запустите mssql-conf
программу установки.
Установите Python 3.5 или более позднюю версию. В этом примере установите Python 3.6:
zypper in python36
Установите 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-server
Переключитесь на корневого пользователя, создайте символьную связь в любой папке, а затем добавьте текущий путь к
$PATH
. Например, файл /usr/bin/env python3 -V указывает на Python 3.6 вместо Python 3.4, как показано в следующем фрагменте кода:$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.15
mssql-conf
Запустите программу установки или другиеmssql-conf
команды на основе:/opt/mssql/bin/mssql-conf setup
Если вы хотите выполнить
mssql-conf
команду в будущем для настройки SQL Server, переключитесь на корневого пользователя и выполнитеPATH=$(pwd):$PATH
команду, чтобы добавить текущий путь к переменной$PATH
среды. Затем выполните команду, как показано на шагеmssql-conf
4.
См. также
Так как Python 3.4 уже достиг своего состояния EOL (окончания срока жизни) и больше не будет получать обновления системы безопасности, рекомендуется использовать поддерживаемую, более новую версию Python. Дополнительные сведения см. в статье Python | endoflife.date.
Заявление об отказе от ответственности за контактные данные сторонней организации
Корпорация Майкрософт предоставляет контактные данные сторонних производителей в целях получения дополнительных сведений по данной теме. Эти данные могут быть изменены без предварительного уведомления. Корпорация Майкрософт не гарантирует точность контактных данных сторонних производителей.