다음을 통해 공유


빠른 시작: Linux용 Windows 하위 시스템에 SQL Server 설치 및 데이터베이스 만들기(WSL 2)

적용 대상:SQL Server - Linux

WSL(Linux용 Windows 하위 시스템)은 가상 머신 또는 이중 부팅 없이 Windows 컴퓨터에서 직접 Linux 환경을 실행할 수 있는 Windows의 기능입니다. WSL은 Windows와 Linux를 동시에 사용하려는 개발자에게 원활하고 생산적인 환경을 제공합니다. 자세한 내용은 Linux용 Windows 하위 시스템이란?

WSL의 SQL Server는 개발 전용입니다.

WSL 2의 SQL Server는 개발 목적으로만 사용되며 프로덕션 워크로드에 지원되지. 실행하려는 SQL Server 버전에 대해 설명된 대로 지원되는 플랫폼 중 하나에서 WSL 환경에서 SQL Server를 실행하는 것이 좋습니다.

지원 관련 문제가 있을 경우 Microsoft에서 지원을 받을 수 있습니다 .

WSL 2에서 SQL Server 시작

WSL 2에서 SQL Server를 시작하는 방법에는 두 가지가 있습니다.

  • systemd 명령을 사용하여 관리할 수 있는 systemctl 서비스로 SQL Server를 설치합니다. WSL에서 systemd 사용하도록 설정해야 합니다. 자세한 내용은 시스템사용하도록 설정하는 방법을 참조하세요.

  • WSL에서 SQL Server 컨테이너를 배포합니다. 이 옵션의 경우 Docker 또는 Podman과 같은 Linux 컨테이너 엔진을 WSL에 설치한 다음 SQL Server 컨테이너를 배포해야 합니다.

필수 구성 요소

WSL 2를 설치합니다. Windows 10 버전 2004 이상 버전(빌드 19041 이상) 또는 Windows 11을 실행하고 있는지 확인합니다. WSL을 설치하려면 관리자 모드에서 PowerShell 또는 Windows 명령 프롬프트를 열고 다음 명령을 실행합니다.

wsl --install

자세한 지침은 WSL사용하여 Windows에 Linux를 설치하는 방법을 참조하세요. 개발을 위해 WSL 환경을 설정하는 방법에 대한 자세한 내용은 WSL 개발 환경 설정참조하세요.

WSL에 SQL Server 설치

이 섹션에서는 WSL에서 Linux 배포를 설정하는 단계와 해당 Linux 배포판에 SQL Server를 설치하는 방법을 설명합니다.

Linux 배포 선택

다음 명령을 사용하여 WSL에 설치할 수 있는 모든 유효한 배포를 나열할 수 있습니다.

wsl -l -o

출력은 다음 예제와 유사합니다.

The following is a list of valid distributions that can be installed.
Install using 'wsl.exe --install <Distro>'.

NAME                            FRIENDLY NAME
Ubuntu                          Ubuntu
Debian                          Debian GNU/Linux
kali-linux                      Kali Linux Rolling
Ubuntu-18.04                    Ubuntu 18.04 LTS
Ubuntu-20.04                    Ubuntu 20.04 LTS
Ubuntu-22.04                    Ubuntu 22.04 LTS
Ubuntu-24.04                    Ubuntu 24.04 LTS
OracleLinux_7_9                 Oracle Linux 7.9
OracleLinux_8_7                 Oracle Linux 8.7
OracleLinux_9_1                 Oracle Linux 9.1
openSUSE-Leap-15.6              openSUSE Leap 15.6
SUSE-Linux-Enterprise-15-SP5    SUSE Linux Enterprise 15 SP5
SUSE-Linux-Enterprise-15-SP6    SUSE Linux Enterprise 15 SP6
openSUSE-Tumbleweed             openSUSE Tumbleweed

이 빠른 시작에서는 Ubuntu 22.04를 설치한 다음 해당 배포에 SQL Server 2022를 설치합니다.

Ubuntu 22.04를 설치하려면 다음 명령을 실행합니다. UNIX 사용자 계정 및 암호를 기록해 둡다. 이 예제에서는 wsluser 사용자 이름으로 사용합니다.

wsl --install -d Ubuntu-22.04

다음 예제와 유사한 출력이 표시됩니다. 마지막에 Ubuntu 22.04 bash 셸에 로그인했음이 표시됩니다.

Installing: Ubuntu 22.04 LTS
Ubuntu 22.04 LTS has been installed.
Launching Ubuntu 22.04 LTS...
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: wsluser
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.167.4-microsoft-standard-WSL2 x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Dec  3 00:32:14 IST 2024

  System load:  0.33                Processes:             32
  Usage of /:   0.1% of 1006.85GB   Users logged in:       0
  Memory usage: 2%                  IPv4 address for eth0: 10.18.123.249
  Swap usage:   0%

This message is shown once a day. To disable it please create the
/home/wsluser/.hushlogin file.

SQL Server 설치

Ubuntu 22.04 bash 셸에 로그인하면 빠른 시작: SQL Server 설치 및 Ubuntu 데이터베이스 만들기에 설명된 단계에 따라 SQL Server 2022를 설치할 수 있습니다.

SQL Server 명령줄 도구도 설치해야 합니다.

IP 주소 가져오기

SSMS(SQL Server Management Studio)를 사용하여 연결할 IP 주소를 식별하려면 다음과 같이 ifconfig 명령을 실행합니다.

ifconfig

다음 예제와 유사한 출력이 표시됩니다.

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.19.50.241  netmask 255.255.240.0  broadcast 10.19.63.255
        inet6 fe80::215:5dff:fe76:c05d  prefixlen 64  scopeid 0x20<link>
        ether 00:15:5d:76:c0:5d  txqueuelen 1000  (Ethernet)
        RX packets 2146  bytes 1452448 (1.4 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1905  bytes 345288 (345.2 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 2039  bytes 4144340 (4.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2039  bytes 4144340 (4.1 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

WSL에서 SQL Server 컨테이너 배포

WSL에서 컨테이너를 배포하려면 먼저 Docker와 같은 Linux 컨테이너 엔진을 설치해야 합니다. 자세한 내용은 WSL에서 Docker 원격 컨테이너 시작하기를 참조하세요. Docker 엔진이 설치되면 다음과 같이 SQL Server 컨테이너 이미지를 배포합니다.

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" \
-e "MSSQL_PID=Developer" -e "MSSQL_AGENT_ENABLED=true" \
-p 14333:1433 --name sqlcontainerwsl --hostname sqlcontainerwsl \
-d mcr.microsoft.com/mssql/server:2022-latest

메모

암호는 SQL Server 기본 암호 정책따라야 합니다. 기본적으로 암호의 길이는 8자 이상이어야 하며 대문자, 소문자, 밑이 10자리 숫자, 기호 등 네 집합 중 세 가지의 문자를 포함해야 합니다. 암호는 최대 128자까지 가능합니다. 가능한 한 길고 복잡한 암호를 사용합니다.

SQL Server 컨테이너용 WSL을 사용하여 영구 스토리지 추가

호스트 디렉터리를 데이터 볼륨 탑재에 설명된 대로 데이터 볼륨을 만들 수 있습니다.

예를 들어 다음 명령을 실행하여 sql_volume있는 /var/opt/mssql/ 볼륨을 설정합니다.

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" \
-e "MSSQL_PID=Developer" -e "MSSQL_AGENT_ENABLED=true" \
-p 14333:1433 --name sqlcontainerwsl --hostname sqlcontainerwsl \
-v sql_volume:/var/opt/mssql/ \
-d mcr.microsoft.com/mssql/server:2022-latest

wsl --terminate 명령을 실행하더라도 데이터가 손실되지 않습니다. WSL을 다시 시작하고 docker run 명령을 실행하여 sql_volume 볼륨을 사용하여 배포할 때 모든 데이터는 그대로 유지됩니다.

지속형 볼륨을 삭제하려면 볼륨을 사용하는 컨테이너가 중지 및 제거되었는지 확인하고 다음 명령을 실행합니다.

docker volume rm sql_volume

발언

클러스터링 스택에 종속된 비즈니스 연속성 기능을 제외하고 개발 목적으로 SQL Server on Linux에 지원되는 대부분의 기능을 구성할 수 있어야 합니다. Pacemaker 또는 HPE Serviceguard와 같은 이러한 기능은 WSL에서 지원되지 않습니다.

Linux의 SQL Server에서 지원되지 않는 기능의 전체 목록은 linux SQL Server 2022의버전 및 지원되는 기능을 참조하세요.

로컬로 연결

다음 단계에서는 sqlcmd 사용하여 새 SQL Server 인스턴스에 로컬로 연결합니다.

주의

암호는 SQL Server 기본 암호 정책따라야 합니다. 기본적으로 암호의 길이는 8자 이상이어야 하며 대문자, 소문자, 밑이 10자리 숫자, 기호 등 네 집합 중 세 가지의 문자를 포함해야 합니다. 암호는 최대 128자까지 가능합니다. 가능한 한 길고 복잡한 암호를 사용합니다.

  1. SQL Server 이름(), 사용자 이름(-S) 및 암호(-U)에 대한 매개 변수를 사용하여 -P 실행합니다. 이 자습서에서는 로컬로 연결하므로 서버 이름이 localhost. 사용자 이름은 sa 암호는 설치 중에 sa 계정에 대해 제공한 이름입니다.

    sqlcmd -S localhost -U sa -P '<password>'
    

    메모

    최신 버전의 sqlcmd 기본적으로 안전합니다. 연결 암호화에 대한 자세한 내용은 Windows용 sqlcmd 유틸리티 Linux 및 macOS용 sqlcmd 사용하여 연결하는 참조하세요. 연결이 성공하지 않으면 sqlcmd -No 옵션을 추가하여 암호화가 필수가 아니라 선택 사항임을 지정할 수 있습니다.

    명령줄에서 암호를 생략하여 입력하라는 메시지가 표시될 수 있습니다.

    나중에 원격으로 연결하려는 경우 -S 매개 변수의 컴퓨터 이름 또는 IP 주소를 지정하고 방화벽에서 포트 1433이 열려 있는지 확인합니다.

  2. 성공하면 sqlcmd 명령 프롬프트에 도달할 것입니다: 1>.

  3. 연결 오류가 발생하면 먼저 오류 메시지에서 문제를 진단합니다. 그런 다음 연결 문제 해결 권장 사항을 검토합니다.

데이터 만들기 및 쿼리

다음 섹션에서는 sqlcmd 사용하여 새 데이터베이스를 만들고, 데이터를 추가하고, 간단한 쿼리를 실행하는 방법을 안내합니다.

Transact-SQL 문 및 쿼리 작성에 대한 자세한 내용은 자습서:Transact-SQL 문 작성을 참조하세요.

새 데이터베이스 만들기

다음 단계에서는 TestDB새 데이터베이스를 만듭니다.

  1. sqlcmd 명령 프롬프트에서 다음 Transact-SQL 명령을 붙여넣어 테스트 데이터베이스를 만듭니다.

    CREATE DATABASE TestDB;
    
  2. 다음 줄에서 서버에 있는 모든 데이터베이스의 이름을 반환하는 쿼리를 작성합니다.

    SELECT Name
    FROM sys.databases;
    
  3. 이전 두 명령은 즉시 실행되지 않습니다. 이전 명령을 실행하려면 새 줄에 GO 입력해야 합니다.

    GO
    

데이터 삽입

다음으로 새 테이블을 만들고 dbo.Inventory두 개의 새 행을 삽입합니다.

  1. sqlcmd 명령 프롬프트에서 컨텍스트를 새 TestDB 데이터베이스로 전환합니다.

    USE TestDB;
    
  2. dbo.Inventory이라는 새 테이블을 생성합니다.

    CREATE TABLE dbo.Inventory
    (
        id INT,
        name NVARCHAR (50),
        quantity INT,
        PRIMARY KEY (id)
    );
    
  3. 새 테이블에 데이터를 삽입합니다.

    INSERT INTO dbo.Inventory
    VALUES (1, 'banana', 150);
    
    INSERT INTO dbo.Inventory
    VALUES (2, 'orange', 154);
    
  4. GO 입력하여 이전 명령을 실행합니다.

    GO
    

데이터 선택

이제 쿼리를 실행하여 dbo.Inventory 테이블에서 데이터를 반환합니다.

  1. sqlcmd 명령 프롬프트에서 수량이 152보다 큰 dbo.Inventory 테이블에서 행을 반환하는 쿼리를 입력합니다.

    SELECT *
    FROM dbo.Inventory
    WHERE quantity > 152;
    
  2. 명령을 실행합니다.

    GO
    

sqlcmd 명령 프롬프트 종료

sqlcmd 세션을 종료하려면 QUIT입력합니다.

QUIT

성능 모범 사례

Linux에 SQL Server를 설치한 후 프로덕션 시나리오의 성능을 향상시키기 위해 Linux 및 SQL Server를 구성하는 모범 사례를 검토합니다. 자세한 내용은 sql Server on Linux 대한성능 모범 사례 및 구성 지침을 참조하세요.

플랫폼 간 데이터 도구

sqlcmd 외에도 다음 플랫폼 간 도구를 사용하여 SQL Server를 관리할 수 있습니다.

도구 묘사
Azure Data Studio 플랫폼 간 GUI 데이터베이스 관리 유틸리티입니다.
Visual Studio Code mssql 확장으로 Transact-SQL 문을 실행하는 플랫폼 간 GUI 코드 편집기입니다.
PowerShell Core cmdlet을 기반으로 하는 플랫폼 간 자동화 및 구성 도구입니다.
mssql-cli Transact-SQL 명령을 실행하기 위한 플랫폼 간 명령줄 인터페이스입니다.

Windows에서 연결

Windows의 SQL Server 도구는 원격 SQL Server 인스턴스에 연결하는 것과 동일한 방식으로 Linux의 SQL Server 인스턴스에 연결합니다.

Linux 컴퓨터에 연결할 수 있는 Windows 컴퓨터가 있는 경우 sqlcmd 실행하는 Windows 명령 프롬프트에서 이 항목의 동일한 단계를 시도해 보세요. localhost대신 대상 Linux 컴퓨터 이름 또는 IP 주소를 사용해야 하며, TCP 포트 1433이 SQL Server 컴퓨터에서 열려 있는지 확인해야 합니다. Windows에서 연결하는 데 문제가 있는 경우 연결 문제 해결 권장 사항을 참조하세요.

Windows에서 실행되지만 Linux의 SQL Server에 연결하는 다른 도구는 다음을 참조하세요.

기타 배포 시나리오

다른 설치 시나리오는 다음 리소스를 참조하세요.

  • 업그레이드: Linux에서 SQL Server의 기존 설치를 업그레이드하는 방법 알아보기
  • 제거: Linux에서 SQL Server 제거
  • 무인 설치 : 프롬프트 없이 설치를 스크립팅하는 방법 알아보기
  • 오프라인 설치 : 오프라인 설치를 위해 패키지를 수동으로 다운로드하는 방법 알아보기

자주 묻는 질문에 대한 답변은 SQL Server on Linux FAQ참조하세요.

  • 백업 및 복원 사용하여 Windows에서 Linux로 SQL Server 데이터베이스 마이그레이션

SQL 설명서에 기여

SQL 콘텐츠를 직접 편집할 수 있다는 사실을 알고 계셨나요? 이렇게 하면 설명서를 개선하는 데 도움이 될 뿐만 아니라 페이지에 기여자로도 인정됩니다.

자세한 내용은 Microsoft Learn 편집 설명서를 참조하세요.