Устранение неполадок в SQL Server на Linux
Область применения: SQL Server — Linux
В этой статье описывается, как устранить неполадки с SQL Server, работающей в Linux или в контейнере Linux. При устранении неполадок SQL Server на Linux не забудьте просмотреть поддерживаемые функции и известные ограничения:
- Заметки о выпуске SQL Server 2022 в Linux
- Заметки о выпуске SQL Server 2019 в Linux
- Заметки о выпуске SQL Server 2017 в 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
В следующем разделе показано, как управлять выполнением контейнеров SQL Server Linux. Для управления службами Linux см. статью о запуске, остановке и перезапуске служб SQL Server в 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 ядро СУБД журналы в /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
расширение) или мини-dumps SQL (.mdmp
расширение).
Например, для просмотра дампов ядра:
sudo ls /var/opt/mssql/log | grep .tar.gz2
Для дампов SQL используйте следующий сценарий:
sudo ls /var/opt/mssql/log | grep .mdmp
Запуск SQL Server в режиме минимальной конфигурации или в однопользовательском режиме
Запуск SQL Server в режиме минимальной конфигурации
Этот режим полезен, если параметр значения конфигурации (например, чрезмерное фиксация памяти) запрещает запуску сервера.
sudo -u mssql /opt/mssql/bin/sqlservr -f
Запуск SQL Server в однопользовательском режиме
Иногда может потребоваться запустить экземпляр SQL Server в однопользовательском режиме с помощью параметра -m
запуска. Дополнительные сведения см. в статье о параметрах запуска. Например, может потребоваться изменить параметры конфигурации сервера или восстановить поврежденную master
базу данных или другую системную базу данных.
Например, используйте следующий скрипт для запуска SQL Server в однопользовательском режиме:
sudo -u mssql /opt/mssql/bin/sqlservr -m
Этот скрипт запускает пользователь в однопользовательском режиме с помощью 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 с системой. Например, чтобы изменить владение всеми файлами базы данных под /var/opt/mssql
mssql
пользователем, выполните следующую команду:
chown -R mssql:mssql /var/opt/mssql/
Перестроение системных баз данных
В качестве крайней меры вы можете перестроить базы данных master
и model
до версий по умолчанию.
Предупреждение
Этот процесс является опасным, так как вы можете удалить все настроенные системные данные SQL Server, включая сведения о пользовательских базах данных (но не сами пользовательские базы данных).
После этого необходимо подключить пользовательские базы данных к экземпляру. Она также удаляет другие сведения, хранящиеся в системных базах данных, включая:
- Сведения о главном ключе базы данных (DMK)
- все сертификаты, загруженные в
master
- пароль для имени входа SA
- сведения, связанные с заданиями, из
msdb
- сведения Database Mail из
msdb
sp_configure
options
Вы не можете повторно подключить какие-либо пользовательские базы данных, зашифрованные с помощью прозрачного шифрования данных (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 и перенастройте сервер, включая восстановление или повторное подключение любых пользовательских баз данных.
sudo systemctl start mssql-server
Повышение производительности
Множество факторов влияют на производительность, в том числе структура базы данных, оборудование и требования к рабочим нагрузкам. Если вы хотите повысить производительность, начните с изучения статьи с рекомендациями по производительности и конфигурации для SQL Server в Linux. Затем изучите некоторые из доступных средств для устранения проблем с производительностью.
- Мониторинг производительности с использованием хранилища запросов
- Системные динамические административные представления
- Панель мониторинга производительности в SQL Server Management Studio
Распространенные проблемы
Не удается подключиться к удаленному экземпляру SQL Server.
См. раздел об устранении неполадок в статье Подключение к SQL Server в Linux.
Появится сообщение об ошибке:
ERROR: Hostname must be 15 characters or less.
Это известная проблема, возникающая, когда имя компьютера, который пытается установить пакет SQL Server, длиннее 15 символов. Сейчас способы обхода этой проблемы ограничены изменением имени компьютера. Это можно сделать, изменив
/etc/hostname
/etc/hosts
имя узла, сохраните каждый файл и перезагрузите компьютер.Пароль администрирования системы (SA) должен быть сброшен, который временно останавливает службу SQL Server.
Если вы забыли пароль системного администратора или по какой-либо причине хотите сбросить его, выполните следующие действия.
Войдите в терминал узла, выполните следующие команды и следуйте инструкциям, чтобы сбросить пароль SA:
sudo systemctl stop mssql-server sudo /opt/mssql/bin/mssql-conf setup
Специальные символы в паролях для входа вызывают ошибки или ошибки входа.
Если в пароле учетных данных SQL Server используются специальные символы, может потребоваться экранировать их с помощью обратной косой черты в командной строке Linux. Например, нужно всегда экранировать знак доллара ($) при его использовании в команде терминала/скрипте оболочки.
Не работает:
sudo sqlcmd -S myserver -U sa -P Test$$
Работает:
sqlcmd -S myserver -U sa -P Test\$\$
Связанный контент
Получение справки
- Идеи об SQL. Есть рекомендации по улучшению SQL Server?
- Вопросы и ответы по продуктам Майкрософт (SQL Server)
- DBA Stack Exchange (тег sql-server): вопросы о SQL Server
- Stack Overflow (тег sql-server): ответы на вопросы о разработке SQL
- Reddit: общие сведения о SQL Server
- Условия лицензии и информация о Microsoft SQL Server
- Варианты поддержки для бизнес-пользователей
- Дополнительная справка и отзывы по SQL Server
Примите участие в разработке документации по SQL
Знаете ли вы, что содержимое SQL можно изменить самостоятельно? Это не только улучшит нашу документацию, но и даст вам статус участника в создании этой страницы.
Дополнительные сведения см. в разделе Участие в работе над документацией по SQL Server.