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

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server (только в Linux) нетБаза данных SQL Azure нетAzure Synapse Analytics (хранилище данных SQL) нетParallel Data Warehouse APPLIES TO: yesSQL Server (Linux only) noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Этот документ описывает устранение неполадок в Microsoft SQL Server, работающих в Linux или контейнере Docker.This document describes how to troubleshoot Microsoft SQL Server running on Linux or in a Docker container. При устранении неполадок SQL Server на Linux не забудьте ознакомиться с поддерживаемыми функциями и известными ограничениями в заметках о выпуске SQL Server на Linux.When troubleshooting SQL Server on Linux, remember to review the supported features and known limitations in the SQL Server on Linux Release Notes.

Совет

Ответы на часто задаваемые вопросы об SQL Server на Linux см. в этой статье.For answers to frequently asked questions, see the SQL Server on Linux FAQ.

Устранение неполадок при сбоях подключенияTroubleshoot connection failures

Если у вас возникли трудности при подключении к SQL Server на базе Linux, нужно проверить следующее.If you are having difficulty connecting to your Linux SQL Server, there are a few things to check.

  • Если вы не можете подключиться локально с помощью localhost, попробуйте использовать вместо этого IP-адрес 127.0.0.1.If you are unable to connect locally using localhost, try using the IP address 127.0.0.1 instead. Возможно, localhost не сопоставлен должным образом с этим адресом.It is possible that localhost is not properly mapped to this address.

  • Убедитесь, что IP-адрес или имя сервера доступны с клиентского компьютера.Verify that the server name or IP address is reachable from your client machine.

    Совет

    Чтобы найти IP-адрес своего компьютера Ubuntu, можно выполнить команду ifconfig, как показано в следующем примере.To find the IP address of your Ubuntu machine, you can run the ifconfig command as in the following example:

    sudo ifconfig eth0 | grep 'inet addr'
    

    Для Red Hat можно использовать ip addr, как показано в следующем примере.For Red Hat, you can use the ip addr as in the following example:

    sudo ip addr show eth0 | grep "inet"
    

    Исключение из этой методики связано с виртуальными машинами Azure.One exception to this technique relates to Azure VMs. Для виртуальных машин Azure найдите общедоступный IP-адрес для виртуальной машины на портале Azure.For Azure VMs, find the public IP for the VM in the Azure portal.

  • Если это применимо, убедитесь, что открыт порт SQL Server (по умолчанию 1433) в брандмауэре.If applicable, check that you have opened the SQL Server port (default 1433) on the firewall.

  • Для виртуальных машин Azure убедитесь в наличии правила группы безопасности сети для порта SQL Server по умолчанию.For Azure VMs, check that you have a network security group rule for the default SQL Server port.

  • Убедитесь, что имя пользователя и пароль не содержат опечатки, лишние пробелы или неверный регистр.Verify that the user name and password do not contain any typos or extra spaces or incorrect casing.

  • Попробуйте явно задать протокол и номер порта с именем сервера, как показано в следующем примере: tcp:имя_сервера,1433.Try to explicitly set the protocol and port number with the server name like the following example: tcp:servername,1433.

  • Проблемы с сетевым подключением также могут вызвать ошибки подключения и истечение времени ожидания.Network connectivity issues can also cause connection errors and timeouts. Проверив сведения о подключении и возможность сетевого подключения, повторите попытку подключения.After verifying your connection information and network connectivity, try the connection again.

Управление службой SQL ServerManage the SQL Server service

В следующих разделах показано, как запустить, остановить, перезапустить службу SQL Server и проверить ее состояние.The following sections show how to start, stop, restart, and check the status of the SQL Server service.

Управление службой mssql-server в Red Hat Enterprise Linux (RHEL) и UbuntuManage the mssql-server service in Red Hat Enterprise Linux (RHEL) and Ubuntu

Проверьте состояние службы SQL Server с помощью следующей команды.Check the status of the SQL Server service using this command:

sudo systemctl status mssql-server

Вы можете останавливать, запускать или перезапускать службу SQL Server по мере необходимости, используя следующие команды.You can stop, start, or restart the SQL Server service as needed using the following commands:

sudo systemctl stop mssql-server
sudo systemctl start mssql-server
sudo systemctl restart mssql-server

Управление выполнением контейнера Docker mssqlManage the execution of the mssql Docker container

Вы можете получить состояние и идентификатор контейнера для последнего созданного контейнера Docker SQL Server, выполнив следующую команду (идентификатор находится в столбце CONTAINER ID).You can get the status and container ID of the latest created SQL Server Docker container by running the following command (The ID is under the CONTAINER ID column):

sudo docker ps -l

Вы можете останавливать или перезапускать службу SQL Server по мере необходимости, используя следующие команды.You can stop or restart the SQL Server service as needed using the following commands:

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

Совет

Дополнительные советы по устранению неполадок в Docker см. в статье Устранение неполадок с контейнерами Docker в SQL Server.For more troubleshooting tips for Docker, see Troubleshooting SQL Server Docker containers.

Доступ к файлам журналаAccess the log files

Подсистема SQL Server записывает данные журнала в файл /var/opt/mssql/log/errorlog в установках Linux и Docker.The SQL Server engine logs to the /var/opt/mssql/log/errorlog file in both the Linux and Docker installations. Для просмотра этого каталога вы должны находиться в режиме суперпользователя.You need to be in 'superuser' mode to browse this directory.

Установщик записывает данные журнала сюда: /var/opt/mssql/setup-< метка времени, отражающая время установки>. Вы можете просмотреть файлы журнала ошибок с помощью любого совместимого с UTF-16 средства, например vim или cat.The installer logs here: /var/opt/mssql/setup-< time stamp representing time of install> You can browse the errorlog files with any UTF-16 compatible tool like 'vim' or 'cat' like this:

sudo cat errorlog

При желании можно также преобразовать файлы в UTF-8, чтобы прочесть их с помощью more или less, используя следующую команду.If you prefer, you can also convert the files to UTF-8 to read them with 'more' or 'less' with the following command:

sudo iconv -f UTF-16LE -t UTF-8 <errorlog> -o <output errorlog file>

Расширенные событияExtended events

Расширенные события можно запрашивать с помощью команды SQL.Extended events can be queried via a SQL command. Дополнительные сведения о расширенных событиях см. здесь.More information about extended events can be found here:

Аварийные дампыCrash dumps

Дампы находятся в каталоге журналов в Linux.Look for dumps in the log directory in Linux. В каталоге /var/opt/mssql/log находятся дампы Linux Core (с расширением TAR.GZ2) или минидампы SQL (с расширением MDMP).Check under the /var/opt/mssql/log directory for Linux Core dumps (.tar.gz2 extension) or SQL minidumps (.mdmp extension)

Для дампов CoreFor Core dumps

sudo ls /var/opt/mssql/log | grep .tar.gz2 

Для дампов SQLFor SQL dumps

sudo ls /var/opt/mssql/log | grep .mdmp 

Запуск SQL Server с минимальной конфигурацией или в однопользовательском режимеStart SQL Server in Minimal Configuration or in Single User Mode

Запуск SQL Server с минимальной конфигурациейStart SQL Server in Minimal Configuration Mode

Эта функция полезна в случае, если установленные значения конфигурации (например, слишком большой объем выделяемой памяти) не позволяют выполнить запуск сервера.This is useful if the setting of a configuration value (for example, over-committing memory) has prevented the server from starting.

sudo -u mssql /opt/mssql/bin/sqlservr -f

Запуск SQL Server в однопользовательском режимеStart SQL Server in Single User Mode

При определенных обстоятельствах экземпляр SQL Server нужно запустить в однопользовательском режиме, используя параметр запуска -m.Under certain circumstances, you may have to start an instance of SQL Server in single-user mode by using the startup option -m. Например, может понадобиться изменить параметры конфигурации сервера, восстановить поврежденную базу данных master или другую системную базу данных.For example, you may want to change server configuration options or recover a damaged master database or other system database. Например, может понадобиться изменить параметры конфигурации сервера, восстановить поврежденную базу данных master или другую системную базу данных.For example, you may want to change server configuration options or recover a damaged master database or other system database

Запуск SQL Server в однопользовательском режимеStart SQL Server in Single User Mode

sudo -u mssql /opt/mssql/bin/sqlservr -m

Запуск SQL Server в однопользовательском режиме с использованием SQLCMDStart SQL Server in Single User Mode with SQLCMD

sudo -u mssql /opt/mssql/bin/sqlservr -m SQLCMD

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

Чтобы избежать проблем с запуском в дальнейшем, SQL Server в Linux следует запускать с указанием пользователя "mssql".Start SQL Server on Linux with the "mssql" user to prevent future startup issues. Пример: "sudo -u mssql /opt/mssql/bin/sqlservr [параметры запуска]"Example "sudo -u mssql /opt/mssql/bin/sqlservr [STARTUP OPTIONS]"

Если вы случайно запустили SQL Server с другим пользователем, нужно изменить владельца файлов базы данных SQL Server обратно на пользователя mssql перед запуском SQL Server с использованием systemd.If you have accidentally started SQL Server with another user, you must change ownership of SQL Server database files back to the 'mssql' user prior to starting SQL Server with systemd. Например, чтобы изменить владельца всех файлов базы данных в /var/opt/mssql на пользователя mssql, выполните следующую команду.For example, to change ownership of all database files under /var/opt/mssql to the 'mssql' user, run the following command

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

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

В качестве крайней меры можно выбрать перестроение базы данных master и шаблона базы данных до версий по умолчанию.As a last resort, you can choose to rebuild the master and model databases back to default versions.

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

Эти действия приведут к удалению всех системных данных SQL Server, которые вы настроили.These steps will DELETE all SQL Server system data that you have configured! Сюда входят сведения о пользовательских базах данных (но не сами пользовательские базы данных).This includes information about your user databases (but not the user databases themselves). Кроме того, будут удалены другие сведения, хранящиеся в системных базах данных, включая следующие: сведения о главном ключе, все сертификаты, загруженные в базу данных master, пароль для входа пользователя SA, сведения о заданиях из msdb, сведения о компоненте Database Mail из msdb и параметры sp_configure.It will also delete other information stored in the system databases, including the following: master key information, any certs loaded in master, the SA Login password, job-related information from msdb, DB Mail information from msdb, and sp_configure options. Используйте эти возможности, только если осознаете последствия.Only use if you understand the implications!

  1. Остановите SQL Server.Stop SQL Server.

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

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

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

    См. предыдущее предупреждение.See the previous warning! Кроме того, необходимо запустить его от имени пользователя mssql, как указано здесь.Also, you must run this as the mssql user as shown here.

  3. После появления сообщения "Восстановление завершено" нажмите клавиши CTRL+C.After you see the message "Recovery is complete", press CTRL+C. Это приведет к завершению работы SQL Server.This will shut down SQL Server

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

    sudo /opt/mssql/bin/mssql-conf set-sa-password
    
  5. Запустите SQL Server и перенастройте сервер.Start SQL Server and reconfigure the server. Сюда входит восстановление или повторное подключение любых пользовательских баз данных.This includes restoring or re-attaching any user databases.

    sudo systemctl start mssql-server
    

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

Существует множество факторов, влияющих на производительность, в том числе структура базы данных, оборудование и требования к рабочим нагрузкам.There are many factors that affect performance, including database design, hardware, and workload demands. Если вы хотите повысить производительность, начните с изучения рекомендаций, описанных в статье Рекомендации по производительности и рекомендации по конфигурации для SQL Server в Linux.If you are looking to improve performance, start by reviewing the best practices in the article, Performance best practices and configuration guidelines for SQL Server on Linux. Затем изучите некоторые из доступных средств для устранения проблем с производительностью.Then explore some of the available tools for troubleshooting performance problems.

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

  1. Невозможно подключиться к удаленному экземпляру SQL Server.You cannot connect to your remote SQL Server instance.

    См. раздел об устранении неполадок в статье Подключение к SQL Server в Linux.See the troubleshooting section of the article, Connect to SQL Server on Linux.

  2. ОШИБКА: длина имени узла не должна превышать 15 символов.ERROR: Hostname must be 15 characters or less.

    Это известная проблема, которая возникает каждый раз, когда имя компьютера, пытающегося установить пакет Debian с SQL Server, имеет длину более 15 символов.This is a known-issue that happens whenever the name of the machine that is trying to install the SQL Server Debian package is longer than 15 characters. Сейчас способы обхода этой проблемы ограничены изменением имени компьютера.There are currently no workarounds other than changing the name of the machine. Один из способов добиться этого заключается в изменении файла имени узла и перезагрузке компьютера.One way to achieve this is by editing the hostname file and rebooting the machine. Это подробно описано в следующем руководстве.The following website guide explains this in detail.

  3. Сброс пароля системного администрирования (SA).Resetting the system administration (SA) password.

    Если вы забыли пароль системного администратора или по какой-либо причине хотите сбросить его, выполните следующие действия.If you have forgotten the system administrator (SA) password or need to reset it for some other reason, follow these steps.

    Примечание

    Следующие действия временно приостанавливают работу службы SQL Server.The following steps stop the SQL Server service temporarily.

    Войдите в терминал узла, выполните следующие команды и следуйте инструкциям на экране, чтобы сбросить пароль SA.Log into the host terminal, run the following commands and follow the prompts to reset the SA password:

    sudo systemctl stop mssql-server
    sudo /opt/mssql/bin/mssql-conf setup
    
  4. Использование специальных знаков в пароле.Using special characters in password.

    Если в пароле для входа в SQL Server используются специальные знаки, может потребоваться экранировать их с помощью обратной косой черты при их использовании в команде Linux в терминале.If you use some characters in the SQL Server login password, you might need to escape them with a backslash when you use them in a Linux command in the terminal. Например, нужно всегда экранировать знак доллара ($) при его использовании в команде терминала/скрипте оболочки.For example, you must escape the dollar sign ($) anytime you use it in a terminal command/shell script:

    Не работает:Does not work:

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

    Работает:Works:

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

    Ресурсы: Специальные знаки ЭкранированиеResources: Special characters Escaping

info_tip Получить справкуGet help