События
Присоединение к вызову ИИ Навыков
8 апр., 15 - 28 мая, 07
Отточите свои навыки ИИ и введите подметки, чтобы выиграть бесплатный экзамен сертификации
Зарегистрируйтесь!Этот браузер больше не поддерживается.
Выполните обновление до Microsoft Edge, чтобы воспользоваться новейшими функциями, обновлениями для системы безопасности и технической поддержкой.
Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: SQL Server — Linux
В этой статье описывается, как устранить неполадки с SQL Server, работающей в Linux или в контейнере Linux. При устранении неполадок SQL Server на Linux не забудьте просмотреть поддерживаемые функции и известные ограничения:
Ответы на часто задаваемые вопросы об SQL Server на Linux см. в этой статье.
Если у вас возникли трудности при подключении к экземпляру SQL Server в Linux, нужно кое-что проверить.
Если вы не можете подключиться локально с помощью localhost
, попробуйте использовать вместо этого IP-адрес 127.0.0.1. Возможно, это localhost
неправильно сопоставлено с этим адресом.
Убедитесь, что IP-адрес или имя сервера доступны с клиентского компьютера.
Чтобы найти IP-адрес своего компьютера Ubuntu, вы можете выполнить команду ifconfig
, как показано в следующем примере:
sudo ifconfig eth0 | grep 'inet addr'
Для Red Hat можно использовать команду ip addr
, как показано в следующем примере:
sudo ip addr show eth0 | grep "inet"
Совет
Исключение из этой методики связано с виртуальными машинами Azure. Для виртуальных машин Azure найдите общедоступный IP-адрес для виртуальной машины на портале Azure.
Если это применимо, проверьте, открыт ли порт SQL Server (по умолчанию 1433) в брандмауэре.
Для виртуальных машин Azure убедитесь в наличии правила группы безопасности сети для порта SQL Server по умолчанию.
Убедитесь, что имя пользователя и пароль не содержат опечатки, лишние пробелы или неверный регистр.
Попробуйте явно задать протокол и номер порта с именем сервера, как показано в следующем примере. tcp:servername,1433
Проблемы с сетевым подключением также могут вызвать ошибки подключения и истечение времени ожидания. Проверив сведения о подключении и возможность сетевого подключения, повторите попытку подключения.
В следующем разделе показано, как управлять выполнением контейнеров SQL Server Linux. Для управления службами Linux см. статью о запуске, остановке и перезапуске служб SQL Server в Linux.
Вы можете получить идентификатор состояния и контейнера последнего созданного контейнера SQL Server Linux, выполнив следующую команду (идентификатор находится под столбцом CONTAINER ID
):
sudo docker ps -l
Вы можете останавливать или перезапускать службу SQL Server по мере необходимости, используя следующие команды.
sudo docker stop <container ID>
sudo docker restart <container ID>
Совет
Дополнительные советы по устранению неполадок для контейнеров Linux см. в разделе "Устранение неполадок контейнеров Docker SQL Server".
SQL Server Database Engine записывает в файл /var/opt/mssql/log/errorlog
как в установках на Linux, так и в контейнерах. Для просмотра этого каталога вы должны находиться в режиме суперпользователя.
Журналы установщика находятся здесь: /var/opt/mssql/setup-<time stamp representing time of install>
Вы можете просматривать файлы errorlog
с помощью любого инструмента, совместимого с UTF-16, например vim или cat, следующим образом:
sudo cat errorlog
При желании можно также преобразовать файлы в UTF-8, чтобы прочесть их с помощью more или less, используя следующую команду:
sudo iconv -f UTF-16LE -t UTF-8 <errorlog> -o <output errorlog file>
Расширенные события можно запрашивать с помощью команды SQL. Дополнительные сведения см. в статье о расширенных событиях.
Ищите дампы в каталоге журналов в Linux. Проверьте в каталоге /var/opt/mssql/log
дампы Linux Core (.tar.gz2
расширение) или минидампы SQL (.mdmp
расширение).
Например, для просмотра дампов ядра:
sudo ls /var/opt/mssql/log | grep .tar.gz2
Для дампов SQL используйте следующий сценарий:
sudo ls /var/opt/mssql/log | grep .mdmp
Этот режим полезен, если установка конфигурации (например, чрезмерная фиксация памяти) предотвращает запуск сервера.
sudo -u mssql /opt/mssql/bin/sqlservr -f
Иногда может потребоваться запустить экземпляр SQL Server в однопользовательском режиме с помощью параметра -m
запуска. Дополнительные сведения см. в статье о параметрах запуска. Например, может потребоваться изменить параметры конфигурации сервера или восстановить поврежденную master
базу данных или другую системную базу данных.
Например, используйте следующий скрипт для запуска SQL Server в однопользовательском режиме:
sudo -u mssql /opt/mssql/bin/sqlservr -m
Этот скрипт запускает SQL Server в однопользовательском режиме с sqlcmd:
sudo -u mssql /opt/mssql/bin/sqlservr -m sqlcmd
Вы всегда должны запускать SQL Server на Linux с пользователемmssql
, чтобы предотвратить будущие проблемы при запуске. Например: sudo -u mssql /opt/mssql/bin/sqlservr [STARTUP OPTIONS]
При случайном запуске SQL Server с другим пользователем необходимо передать права на файлы базы данных SQL Server пользователю mssql
, прежде чем запускать SQL Server с systemd. Например, чтобы изменить владельца всех файлов базы данных под /var/opt/mssql
на пользователя mssql
, выполните следующую команду:
chown -R mssql:mssql /var/opt/mssql/
В качестве крайней меры вы можете перестроить базы данных master
и model
до версий по умолчанию.
Предупреждение
Этот процесс является опасным, так как вы можете удалить все настроенные системные данные SQL Server, включая сведения о пользовательских базах данных (но не сами пользовательские базы данных).
После этого необходимо подключить пользовательские базы данных к экземпляру. Она также удаляет другие сведения, хранящиеся в системных базах данных, включая:
master
sa
учетной записиmsdb
msdb
sp_configure
параметрыВы не можете повторно подключить какие-либо пользовательские базы данных, зашифрованные с помощью прозрачного шифрования данных (TDE), если ваши сертификаты и закрытые ключи также не резервируются.
Выполните эти действия, только если осознаете их потенциальные последствия.
Остановка ядра СУБД SQL Server
sudo systemctl stop mssql-server
Запустите sqlservr с параметром force-setup
sudo -u mssql /opt/mssql/bin/sqlservr --force-setup
Вы всегда должны запускать SQL Server на Linux с пользователемmssql
, чтобы предотвратить будущие проблемы при запуске.
После того как появится сообщение "Восстановление завершено", нажмите клавишиCtrl+C. Это завершает работу SQL Server.
Перенастройка sa
пароля.
sudo /opt/mssql/bin/mssql-conf set-sa-password
Внимание!
Пароль должен соответствовать политике паролей по умолчанию SQL Server. По умолчанию пароль должен быть не короче восьми символов и содержать три вида символов из следующих: прописные буквы, строчные буквы, десятичные цифры, специальные символы. Пароли могут иметь длину до 128 символов. Рекомендуется использовать максимально длинные и сложные пароли.
Запустите SQL Server и перенастройте сервер, включая восстановление или повторное подключение любых пользовательских баз данных.
sudo systemctl start mssql-server
Множество факторов влияют на производительность, в том числе структура базы данных, оборудование и требования к рабочим нагрузкам. Если вы хотите повысить производительность, начните с изучения статьи с рекомендациями по производительности и конфигурации для SQL Server в Linux. Затем изучите некоторые из доступных средств для устранения проблем с производительностью.
Не удается подключиться к удаленному экземпляру SQL Server.
См. раздел об устранении неполадок в статье Подключение к SQL Server в Linux.
Появится сообщение об ошибке: ERROR: Hostname must be 15 characters or less.
Это известная проблема, возникающая, когда имя компьютера, который пытается установить пакет SQL Server, длиннее 15 символов. Сейчас способы обхода этой проблемы ограничены изменением имени компьютера. Это можно сделать, отредактировав как /etc/hostname
, так и /etc/hosts
, изменив имя узла, сохранив каждый файл и перезагрузив компьютер.
Пароль системного администратора (sa
) должен быть сброшен, что временно останавливает службу SQL Server.
Если вы забыли sa
пароль или хотите сбросить его по какой-либо другой причине, выполните следующие действия.
Войдите в терминал узла, выполните следующие команды и следуйте инструкциям по сбросу sa
пароля:
sudo systemctl stop mssql-server
sudo /opt/mssql/bin/mssql-conf setup
Внимание!
Пароль должен соответствовать политике паролей по умолчанию SQL Server. По умолчанию пароль должен быть не короче восьми символов и содержать три вида символов из следующих: прописные буквы, строчные буквы, десятичные цифры, специальные символы. Пароли могут иметь длину до 128 символов. Рекомендуется использовать максимально длинные и сложные пароли.
Специальные символы в паролях могут привести к ошибкам или сбоям входа.
Если вы используете в пароле SQL Server некоторые символы, может потребоваться экранировать их обратной косой чертой при использовании в командной строке Linux. Например, вы должны экранировать знак доллара ($
) в любое время, когда вы используете его в скрипте командной или оболочки терминала:
Не работает:
sudo sqlcmd -S myserver -U sa -P Test$$
Работает:
sqlcmd -S myserver -U sa -P Test\$\$
Знаете ли вы, что содержимое SQL можно изменить самостоятельно? Это не только улучшит нашу документацию, но и даст вам статус участника в создании этой страницы.
Дополнительные сведения см. в разделе Редактирование документации Microsoft Learn.
События
Присоединение к вызову ИИ Навыков
8 апр., 15 - 28 мая, 07
Отточите свои навыки ИИ и введите подметки, чтобы выиграть бесплатный экзамен сертификации
Зарегистрируйтесь!