Condividi tramite


Guida introduttiva: Installare SQL Server e creare un database nel sottosistema Windows per Linux (WSL 2)

si applica a:SQL Server - Linux

Sottosistema Windows per Linux (WSL) è una funzionalità di Windows che consente di eseguire un ambiente Linux direttamente nel computer Windows, senza la necessità di una macchina virtuale o di un doppio avvio. WSL offre un'esperienza facile e produttiva per gli sviluppatori che vogliono usare sia Windows che Linux contemporaneamente. Per altre informazioni, vedere Che cos'è il sottosistema Windows per Linux?

SQL Server in WSL è destinato solo all'uso dello sviluppo

SQL Server in WSL 2 è destinato solo a scopi di sviluppo ed è non supportato per i carichi di lavoro di produzione. È consigliabile eseguire SQL Server in ambienti WSL in una delle piattaforme supportate come documentato, per la versione di SQL Server che si intende eseguire.

Per eventuali problemi correlati al supporto, è possibile ottenere supporto da Microsoft.

Introduzione a SQL Server in WSL 2

Esistono due modi per iniziare a usare SQL Server in WSL 2:

  • Installare SQL Server come servizio systemd, che può essere gestito usando i comandi systemctl. Assicurarsi di abilitare systemd in WSL. Per altre informazioni, vedere come abilitare systemd.

  • Distribuire contenitori di SQL Server in WSL. Per questa opzione, è necessario installare un motore di contenitori Linux in WSL, ad esempio Docker o Podman, e quindi distribuire i contenitori di SQL Server.

Prerequisiti

Installare WSL 2. Assicurarsi di eseguire Windows 10 versione 2004 o successiva (Build 19041 e versioni successive) o Windows 11. Per installare WSL, aprire un prompt dei comandi di PowerShell o Windows in modalità amministratore e seguire le istruzioni nella sezione successiva.

Per istruzioni dettagliate, vedere Come installare Linux in Windows con WSL. Per informazioni sulla configurazione dell'ambiente WSL per lo sviluppo, vedere Configurare un ambiente di sviluppo WSL.

Installare SQL Server in WSL

Questa sezione descrive i passaggi per configurare una distribuzione Linux in WSL e come installare SQL Server in tale distribuzione Linux.

Scegliere la distribuzione linux

È possibile elencare tutte le distribuzioni valide che possono essere installate in WSL usando il comando seguente:

wsl -l -o

L'output è simile all'esempio seguente.

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

Per questa guida introduttiva, installare Ubuntu 22.04 e quindi installare SQL Server 2022 in tale distribuzione.

Per installare Ubuntu 22.04, eseguire il comando seguente. Prendere nota dell'account utente e della password UNIX. In questo esempio usare wsluser come nome utente.

wsl --install -d Ubuntu-22.04

L'output dovrebbe essere simile all'esempio seguente. Alla fine, dovrebbe essere visualizzato che si è connessi alla shell Bash di Ubuntu 22.04.

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.

Installare SQL Server

Dopo aver eseguito l'accesso alla shell Bash di Ubuntu 22.04, è possibile seguire i passaggi descritti in Avvio rapido: Installare SQL Server e creare un database in Ubuntu per installare SQL Server 2022.

Dovresti installare anche gli strumenti da riga di comando di SQL Server.

Ottenere l'indirizzo IP

Per identificare l'indirizzo IP a cui connettersi tramite SQL Server Management Studio (SSMS), eseguire il comando ifconfig come indicato di seguito:

ifconfig

L'output dovrebbe essere simile all'esempio seguente.

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

Distribuire contenitori di SQL Server in WSL

Per distribuire i contenitori in WSL, è prima necessario installare un motore contenitore Linux, ad esempio Docker. Per altre informazioni, vedere Introduzione ai contenitori remoti Docker in WSL. Dopo aver installato il motore Docker, distribuire l'immagine del contenitore di SQL Server come indicato di seguito.

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

Quando si distribuisce un contenitore per SQL Server 2025 (17.x) o una versione successiva, usare MSSQL_PID=DeveloperStandard per Standard Developer Edition e MSSQL_PID=Developer per Enterprise Developer Edition.

Nota

La password deve seguire i criteri password predefiniti di SQL Server . Per impostazione predefinita, la password deve avere una lunghezza di almeno otto caratteri e contenere caratteri da tre dei quattro set seguenti: lettere maiuscole, lettere minuscole, cifre base-10 e simboli. Le password possono contenere fino a 128 caratteri. Usare password il più lunghe e complesse possibile.

Aggiungere l'archiviazione permanente con WSL per i contenitori di SQL Server

È possibile creare volumi di dati come descritto in Montare una directory host come volume di dati.

Ad esempio, eseguire il comando seguente per configurare un volume denominato sql_volume che si trova in /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

Quando si distribuisce un contenitore per SQL Server 2025 (17.x) o una versione successiva, usare MSSQL_PID=DeveloperStandard per Standard Developer Edition e MSSQL_PID=Developer per Enterprise Developer Edition.

Anche se si esegue il comando wsl --terminate, i dati non andranno persi. Quando si avvia di nuovo WSL ed si esegue il comando docker run per eseguire la distribuzione usando il volume sql_volume, tutti i dati rimangono intatti.

Se si vuole eliminare il volume persistente, assicurarsi che il contenitore che usa il volume venga arrestato e rimosso ed eseguire il comando seguente.

docker volume rm sql_volume

Osservazioni

È consigliabile configurare la maggior parte delle funzionalità supportate per SQL Server in Linux a scopo di sviluppo, ad eccezione delle funzionalità di continuità aziendale dipendenti dagli stack di clustering. Queste funzionalità, ad esempio Pacemaker o HPE Serviceguard, non sono supportate in WSL.

Per un elenco completo delle funzionalità non supportate per SQL Server in Linux, vedere Edition e le funzionalità supportate di SQL Server 2022 in Linux.

Connettersi in locale

La procedura seguente usa sqlcmd per connettersi localmente alla nuova istanza di SQL Server.

Cautela

La password deve seguire i criteri password predefiniti di SQL Server . Per impostazione predefinita, la password deve avere una lunghezza di almeno otto caratteri e contenere caratteri da tre dei quattro set seguenti: lettere maiuscole, lettere minuscole, cifre base-10 e simboli. Le password possono contenere fino a 128 caratteri. Usare password il più lunghe e complesse possibile.

  1. Eseguire sqlcmd con parametri per il nome di SQL Server (-S), il nome utente (-U) e la password (-P). In questa esercitazione ci si connette in locale, quindi il nome del server è localhost. Il nome utente è sa e la password è quella specificata per l'account sa durante l'installazione.

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

    Nota

    Le versioni più recenti di sqlcmd sono protette per impostazione predefinita. Per altre informazioni sulla crittografia della connessione, vedere utilità sqlcmd per Windows e Connessione con sqlcmd per Linux e macOS. Se la connessione non riesce, è possibile aggiungere l'opzione -No a sqlcmd per specificare che la crittografia è facoltativa, non obbligatoria.

    È possibile omettere la password nella riga di comando per richiederne l'immissione.

    Se successivamente si decide di connettersi in remoto, specificare il nome del computer o l'indirizzo IP per il parametro -S e assicurarsi che la porta 1433 sia aperta nel firewall.

  2. In caso di esito positivo, si dovrebbe accedere a un prompt dei comandi sqlcmd: 1>.

  3. Se si verifica un errore di connessione, provare prima a diagnosticare il problema dal messaggio di errore. Esaminare quindi le raccomandazioni per la risoluzione dei problemi di connessione .

Creare ed eseguire query sui dati

Le sezioni seguenti illustrano come usare sqlcmd per creare un nuovo database, aggiungere dati ed eseguire una query semplice.

Per ulteriori informazioni sulla redazione di istruzioni Transact-SQL e query, vedere Tutorial: Write Transact-SQL statements.

Creare un nuovo database

La procedura seguente consente di creare un nuovo database denominato TestDB.

  1. Dal prompt dei comandi di sqlcmd incollare il comando Transact-SQL seguente per creare un database di test:

    CREATE DATABASE TestDB;
    
  2. Nella riga successiva scrivere una query per restituire il nome di tutti i database nel server:

    SELECT Name
    FROM sys.databases;
    
  3. I due comandi precedenti non vengono eseguiti immediatamente. È necessario digitare GO in una nuova riga per eseguire i comandi precedenti:

    GO
    

Inserire dati

Creare quindi una nuova tabella, dbo.Inventorye inserire due nuove righe.

  1. Dal prompt dei comandi sqlcmd , passare al nuovo database TestDB:

    USE TestDB;
    
  2. Creare una nuova tabella denominata dbo.Inventory:

    CREATE TABLE dbo.Inventory
    (
        id INT,
        name NVARCHAR (50),
        quantity INT,
        PRIMARY KEY (id)
    );
    
  3. Inserire i dati nella nuova tabella:

    INSERT INTO dbo.Inventory
    VALUES (1, 'banana', 150);
    
    INSERT INTO dbo.Inventory
    VALUES (2, 'orange', 154);
    
  4. Digitare GO per eseguire i comandi precedenti:

    GO
    

Selezionare i dati

Eseguire ora una query per restituire dati dalla tabella dbo.Inventory.

  1. Dal prompt dei comandi di sqlcmd, inserire una query che restituisca righe dalla tabella dbo.Inventory in cui la quantità è maggiore di 152.

    SELECT *
    FROM dbo.Inventory
    WHERE quantity > 152;
    
  2. Eseguire il comando :

    GO
    

Uscire dal prompt dei comandi sqlcmd

Per terminare la sessione di sqlcmd, digitare QUIT:

QUIT

Migliori pratiche per le prestazioni

Dopo aver installato SQL Server in Linux, esaminare le procedure consigliate per la configurazione di Linux e SQL Server per migliorare le prestazioni per gli scenari di produzione. Per altre informazioni, vedere Procedure consigliate per le prestazioni e linee guida di configurazione per SQL Server in Linux.

Strumenti dati multipiattaforma

Oltre a sqlcmd, è possibile usare gli strumenti multipiattaforma seguenti per gestire SQL Server:

Strumento Descrizione
di Visual Studio Code Editor di codice GUI multipiattaforma che esegue istruzioni Transact-SQL con l'estensione MSSQL.
PowerShell Uno strumento di automazione e configurazione multipiattaforma basato sui cmdlet.
mssql-cli Interfaccia a riga di comando multipiattaforma per l'esecuzione di comandi Transact-SQL.

Connettersi da Windows

Gli strumenti di SQL Server in Windows si connettono alle istanze di SQL Server in Linux nello stesso modo in cui si connetterebbero a qualsiasi istanza remota di SQL Server.

Se si dispone di un computer Windows in grado di connettersi al computer Linux, provare gli stessi passaggi descritti in questo articolo da un prompt dei comandi di Windows che esegue sqlcmd. È necessario usare il nome o l'indirizzo IP del computer Linux di destinazione anziché localhoste assicurarsi che la porta TCP 1433 sia aperta nel computer SQL Server. In caso di problemi di connessione da Windows, vedere consigli per la risoluzione dei problemi di connessione.

Per altri strumenti eseguiti in Windows ma connettersi a SQL Server in Linux, vedere:

Altri scenari di distribuzione

Per altri scenari di installazione, vedere le risorse seguenti:

Per risposte alle domande frequenti, vedere domande frequenti su SQL Server in Linux.

Contribuire alla documentazione di SQL

Si è appreso che è possibile modificare il contenuto SQL manualmente? In tal caso, non solo contribuisci a migliorare la documentazione, ma vieni anche riconosciuto come collaboratore della pagina.

Per altre informazioni, vedere Modificare la documentazione di Microsoft Learn.