Linux에서 SQL Server 문제 해결Troubleshoot SQL Server on Linux

이 항목 적용 대상: 예(Linux에만 해당) SQL Server없습니다Azure SQL 데이터베이스없습니다Azure SQL 데이터 웨어하우스없습니다 병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO: yesSQL Server (Linux only)noAzure SQL DatabasenoAzure SQL Data WarehousenoParallel Data Warehouse

이 문서에서는 Docker 컨테이너에서 또는 Linux에서 실행 중인 Microsoft SQL Server 문제를 해결 하는 방법을 설명 합니다.This document describes how to troubleshoot Microsoft SQL Server running on Linux or in a Docker container. Linux에서 SQL Server의 문제를 해결할 때의 알려진된 제한은 지원 되는 기능을 검토 해야는 Linux 릴리스 정보에서 SQL Server합니다.When troubleshooting SQL Server on Linux, remember to review the supported features and known limitations in the SQL Server on Linux Release Notes.

자주 묻는 질문에 대 한 답을 참조 하십시오.는 Linux FAQ에서 SQL Server합니다.For answers to frequently asked questions, see the SQL Server on Linux FAQ.

연결 오류 문제 해결Troubleshoot connection failures

Linux SQL Server에 연결 하는 데 문제가 있는 경우 확인할 몇 가지 있습니다.If you are having difficulty connecting to your Linux SQL Server, there are a few things to check.

  • 서버 이름 또는 IP 주소는 클라이언트 컴퓨터에서 연결할 수 있는지 확인 합니다.Verify that the server name or IP address is reachable from your client machine.

    Ubuntu 컴퓨터의 IP 주소를 확인 하려면 다음 예제와 같이 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 주소를 사용할 수 있습니다.For Red Hat, you can use the ip addr as in the following example:

    sudo ip addr show eth0 | grep "inet"
    

    이 기술은 한 가지 예외는 Azure Vm을 연결합니다.One exception to this technique relates to Azure VMs. Azure Vm에 대 한 Azure 포털에서 VM에 대 한 공용 IP를 찾을합니다.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 Vm에 대 한 권한이 있는지 확인 한 기본 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:servername, 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 Server 서비스를 관리 합니다.Manage the SQL Server service

다음 섹션에는 시작, 중지, 다시 시작 하 고, SQL Server 서비스의 상태를 확인 하는 방법을 보여 줍니다.The following sections show how to start, stop, restart, and check the status of the SQL Server service.

Red Hat Enterprise Linux (RHEL) 및 Ubuntu mssql 서버 서비스를 관리 합니다.Manage 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

Mssql Docker 컨테이너의 실행을 관리Manage the execution of the mssql Docker container

다음 명령을 실행 하 여 만든된 최신 SQL Server Docker 컨테이너의 상태 및 컨테이너 ID를 가져올 수 있습니다 (아래에서 ID가는 컨테이너 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에 대 한 자세한 문제 해결 팁에 대 한 참조 SQL Server 문제 해결 Docker 컨테이너합니다.For more troubleshooting tips for Docker, see Troubleshooting SQL Server Docker containers.

로그 파일에 액세스Access the log files

SQL Server 엔진 Linux과 Docker를 모두 설치에서 /var/opt/mssql/log/errorlog 파일에 로깅.The SQL Server engine logs to the /var/opt/mssql/log/errorlog file in both the Linux and Docker installations. 이 디렉터리를 찾을 수 'superuser' 모드에 포함 되도록 해야 합니다.You need to be in ‘superuser’ mode to browse this directory.

설치 관리자 로그 여기: / var/옵트인/mssql/설정-< 설치의 시간을 나타내는 타임 스탬프 > 다음과 같이 '분류기' 또는 'vim' 같은 모든 u t F-16 호환 도구 사용 하 여 오류 로그 파일을 찾아볼 수 있습니다.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

원하는 경우 변환할 수도 있습니다는 파일을 u t F-8로 읽을 수 '' 다소간 '' 다음 명령을 사용 합니다.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. Linux 핵심 덤프 /var/opt/mssql/log 디렉터리에서 확인 하십시오 (. tar.gz2 확장) 또는 SQL 미니 덤프 (.mdmp 확장명)Check under the /var/opt/mssql/log directory for Linux Core dumps (.tar.gz2 extension) or SQL minidumps (.mdmp extension)

코어 덤프에 대 한For Core dumps

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

SQL 덤프에 대 한For 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

특정 상황에서는 시작 옵션-m을 사용 하 여 단일 사용자 모드에서 SQL Server의 인스턴스를 시작할 수 있습니다.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

SQLCMD 통해 단일 사용자 모드로 SQL Server를 시작 합니다.Start SQL Server in Single User Mode with SQLCMD

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

경고

"mssql" 사용자와 함께 Linux에서 SQL Server를 시작하여 향후 시작 문제를 방지합니다.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를 시작한 경우 다시 systemd와 SQL Server를 시작 하기 전에 'mssql' 사용자에 게 SQL Server 데이터베이스 파일의 소유권을 변경 해야 합니다.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. 예를 들어 'mssql' 사용자에 게 /var/opt/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). 다음을 포함 한 후 시스템 데이터베이스에 저장 된 다른 정보와 삭제 됩니다: 마스터 키 정보, 모든 인증서에 마스터 SA 로그인 암호, msdb에서 작업 관련 정보, msdb 및 sp_configure 옵션에서 DB 메일 정보 로드 합니다.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강제 설치 매개 변수입니다.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
    

일반적인 문제Common issues

  1. 원격 SQL Server 인스턴스에 연결할 수 없습니다.You cannot connect to your remote SQL Server instance.

    문서의 문제 해결 섹션을 참조 Linux에서 SQL Server에 연결합니다.See the troubleshooting section of the article, Connect to SQL Server on Linux.

  2. 오류: 호스트 이름이 15 자 여야 합니다 또는 작습니다.ERROR: Hostname must be 15 characters or less.

    SQL Server Debian 패키지 설치를 시도 하는 컴퓨터 이름이 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.

    시스템 관리자 (SA) 암호를 잊어버린 하거나 일부 다른 이유로 다시 설정 해야 할 경우 다음이 단계를 수행 합니다.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\$\$
    

    리소스: 특수 문자 EscapingResources: Special characters Escaping

info_tip 도움말 보기Get Help