Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server в Linux
В этой статье описывается, как устранить неполадки с SQL Server, работающей в Linux или в контейнере 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, выполнив следующую команду. ID находится в столбце 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-<installation_timestamp>.
Вы можете просматривать 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 (с расширением .tar.gz2) или минидампы 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
Этот скрипт запускается SQL Server в однопользовательском режиме, ограничивая подключения к sqlcmd клиенту (имя 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, включая сведения о пользовательских базах данных (но не сами пользовательские базы данных).
После этого необходимо подключить пользовательские базы данных к экземпляру. Она также удаляет другие сведения, хранящиеся в системных базах данных, включая:
- Сведения о главном ключе базы данных (DMK)
- все сертификаты, загруженные в
master - пароль для
saучетной записи - информация, связанная с работой, из
msdb - Информация из Database Mail
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 в Linux
Затем изучите некоторые доступные средства для устранения проблем с производительностью.
- Мониторинг производительности с использованием хранилища запросов
- Динамические административные представления и функции
- Панель мониторинга производительности в SQL Server Management Studio
Распространенные проблемы
Не удается подключиться к удаленному экземпляру SQL Server.
Появится сообщение об ошибке:
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$$Работает:
sudo sqlcmd -S myserver -U sa -P Test\$\$
Связанный контент
Получить помощь
- Идеи об SQL. Есть рекомендации по улучшению SQL Server?
- Вопросы и ответы по продуктам Майкрософт (SQL Server)
- DBA Stack Exchange (тег sql-server): вопросы о SQL Server
- Stack Overflow (тег sql-server): ответы на вопросы о разработке SQL
- Условия лицензии и информация о Microsoft SQL Server
- Варианты поддержки для бизнес-пользователей
- Дополнительная справка и отзывы по SQL Server
Примите участие в разработке документации по SQL
Знаете ли вы, что содержимое SQL можно изменить самостоятельно? Это не только улучшит нашу документацию, но и даст вам статус участника в создании этой страницы.
Дополнительные сведения см. в разделе Редактирование документации Microsoft Learn.