Устранение неполадок в SQL Server на Linux

Применимо к:SQL Server — Linux

В этой статье описывается, как устранить неполадки с SQL Server, работающей в Linux или в контейнере Linux. При устранении неполадок SQL Server на 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

В следующем разделе показано, как управлять выполнением контейнеров Docker в SQL Server. Для управления службами Linux см. статью о запуске, остановке и перезапуске служб SQL Server в Linux.

Управление выполнением контейнера Docker в SQL Server

Вы можете получить идентификатор состояния и контейнера последнего созданного контейнера Docker SQL Server, выполнив следующую команду (идентификатор находится под столбцом CONTAINER ID ):

sudo docker ps -l

Вы можете останавливать или перезапускать службу SQL Server по мере необходимости, используя следующие команды.

sudo docker stop <container ID>
sudo docker restart <container ID>

Совет

Дополнительные советы по устранению неполадок для Docker см. в разделе "Устранение неполадок контейнеров Docker SQL Server".

Доступ к файлам журнала

SQL Server ядро СУБД журналы в /var/opt/mssql/log/errorlog файл в установках Linux и контейнеров. Для просмотра этого каталога вы должны находиться в режиме суперпользователя.

Установщик записывает данные журнала сюда: /var/opt/mssql/setup-<time stamp representing time of install>. Вы можете просмотреть файлы журнала ошибок с помощью любого совместимого с 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/mssqlmssql пользователем, выполните следующую команду:

chown -R mssql:mssql /var/opt/mssql/

Перестроение системных баз данных

В качестве крайней меры вы можете перестроить базы данных master и model до версий по умолчанию.

Предупреждение

Этот процесс является опасным, так как вы можете удалить все настроенные системные данные SQL Server, включая сведения о пользовательских базах данных (но не сами пользовательские базы данных).

После этого необходимо подключить пользовательские базы данных к экземпляру. Она также удаляет другие сведения, хранящиеся в системных базах данных, включая:

  • Сведения о главном ключе базы данных
  • все сертификаты, загруженные в master
  • пароль для имени входа SA
  • сведения, связанные с заданиями, из msdb
  • сведения Database Mail из msdb
  • sp_configure options

Вы не можете повторно подключить какие-либо пользовательские базы данных, зашифрованные с помощью прозрачного шифрования данных (TDE), если ваши сертификаты и закрытые ключи также не резервируются.

Выполните эти действия, только если осознаете их потенциальные последствия.

  1. Остановка ядра СУБД SQL Server

    sudo systemctl stop mssql-server
    
  2. Запустите sqlservr с параметром force-setup

    sudo -u mssql /opt/mssql/bin/sqlservr --force-setup
    

    Вы всегда должны запускать SQL Server на Linux с пользователемmssql, чтобы предотвратить будущие проблемы при запуске.

  3. После того как появится сообщение "Восстановление завершено", нажмите клавишиCtrl+C. Это завершает работу SQL Server.

  4. Перенастройте пользователя SA.

    sudo /opt/mssql/bin/mssql-conf set-sa-password
    
  5. Запустите SQL Server и перенастройте сервер, включая восстановление или повторное подключение любых пользовательских баз данных.

    sudo systemctl start mssql-server
    

Повышение производительности

Множество факторов влияют на производительность, в том числе структура базы данных, оборудование и требования к рабочим нагрузкам. Если вы хотите повысить производительность, начните с изучения статьи с рекомендациями по производительности и конфигурации для SQL Server в Linux. Затем изучите некоторые из доступных средств для устранения проблем с производительностью.

Распространенные проблемы

  1. Не удается подключиться к удаленному экземпляру SQL Server.

    См. раздел об устранении неполадок в статье Подключение к SQL Server в Linux.

  2. Появится сообщение об ошибке: ERROR: Hostname must be 15 characters or less.

    Это известная проблема, возникающая, когда имя компьютера, который пытается установить пакет SQL Server, длиннее 15 символов. Сейчас способы обхода этой проблемы ограничены изменением имени компьютера. Это можно сделать, изменив /etc/hostname/etc/hostsимя узла, сохраните каждый файл и перезагрузите компьютер.

  3. Пароль администрирования системы (SA) должен быть сброшен, который временно останавливает службу SQL Server.

    Если вы забыли пароль системного администратора или по какой-либо причине хотите сбросить его, выполните следующие действия.

    Войдите в терминал узла, выполните следующие команды и следуйте инструкциям, чтобы сбросить пароль SA:

    sudo systemctl stop mssql-server
    sudo /opt/mssql/bin/mssql-conf setup
    
  4. Специальные символы в паролях для входа вызывают ошибки или ошибки входа.

    Если в пароле учетных данных SQL Server используются специальные символы, может потребоваться экранировать их с помощью обратной косой черты в командной строке Linux. Например, нужно всегда экранировать знак доллара ($) при его использовании в команде терминала/скрипте оболочки.

    Не работает:

    sudo sqlcmd -S myserver -U sa -P Test$$
    

    Работает:

    sqlcmd -S myserver -U sa -P Test\$\$
    

Получение справки

Примите участие в разработке документации по SQL

Знаете ли вы, что содержимое SQL можно изменить самостоятельно? Это не только улучшит нашу документацию, но и даст вам статус участника в создании этой страницы.

Дополнительные сведения см. в разделе Участие в работе над документацией по SQL Server.