Condividi tramite


Distribuire SQL Edge di Azure con Docker

Importante

SQL Edge di Azure verrà ritirato il 30 settembre 2025. Per altre informazioni e per le opzioni di migrazione, vedere l'annuncio di ritiro.

Nota

SQL Edge di Azure non supporta più la piattaforma ARM64.

In questa guida di avvio rapido si usa Docker per il pull e l'esecuzione dell'immagine del contenitore di SQL Edge di Azure. Ci si connette quindi con sqlcmd per creare il primo database ed eseguire query.

Questa immagine è costituita da SQL Edge basato su Ubuntu 18.04. Può essere usata con il motore Docker 1.8 o versioni successive su Linux.

I contenitori di SQL Edge di Azure non sono supportati nelle seguenti piattaforme per i carichi di lavoro di produzione:

  • Finestre
  • macOS
  • Azure IoT Edge per Linux in Windows (EFLOW)

Prerequisiti

  • Motore Docker 1.8 o versioni successive in qualsiasi distribuzione di Linux. Per altre informazioni, vedere Installare Docker. Poiché le immagini SQL Edge sono basate su Ubuntu 18.04, è consigliabile usare un host Docker Ubuntu 18.04.
  • Driver di archiviazione overlay2 Docker. Si tratta dell'impostazione predefinita per la maggior parte degli utenti. Se non si sta usando questo provider di archiviazione ed è necessario cambiarlo, vedere le istruzioni e gli avvisi nella documentazione per la configurazione di overlay2.
  • Almeno 10 GB di spazio su disco.
  • Almeno 1 GB di RAM.
  • Requisiti hardware per SQL Edge di Azure.

Nota

Per i comandi Bash in questo articolo, si usa sudo. Se non si vuole usare sudo per eseguire Docker, è possibile configurare un gruppo Docker e aggiungere utenti a tale gruppo. Per altre informazioni, vedere Post-installation steps for Linux (Passaggi post-installazione per Linux).

Effettuare il pull ed eseguire l'immagine del contenitore

  1. Eseguire il pull dell'immagine del contenitore di SQL Edge di Azure dal Registro Container Microsoft.

    sudo docker pull mcr.microsoft.com/azure-sql-edge:latest
    

    Il comando precedente esegue il pull delle ultime immagini del contenitore di SQL Edge. Per visualizzare tutte le immagini disponibili, vedere la pagina dell'hub Docker su azure-sql-egde.

  2. Per eseguire l'immagine del contenitore con Docker, usare il comando seguente da una shell bash:

    • Avviare un'istanza di SQL Edge di Azure in esecuzione come edizione Developer:

      sudo docker run --cap-add SYS_PTRACE -e 'ACCEPT_EULA=1' -e 'MSSQL_SA_PASSWORD=yourStrong(!)Password' -p 1433:1433 --name azuresqledge -d mcr.microsoft.com/azure-sql-edge
      
    • Avviare un'istanza di SQL Edge di Azure in esecuzione come edizione Premium:

      sudo docker run --cap-add SYS_PTRACE -e 'ACCEPT_EULA=1' -e 'MSSQL_SA_PASSWORD=yourStrong(!)Password' -e 'MSSQL_PID=Premium' -p 1433:1433 --name azuresqledge -d mcr.microsoft.com/azure-sql-edge
      

    Importante

    La password deve essere conforme ai criteri password predefiniti del motore di database SQL di Microsoft, altrimenti il contenitore non potrà configurare il motore di database SQL e smetterà di funzionare. Per impostazione predefinita, la password deve essere composta da almeno 8 caratteri e contenere almeno tre delle quattro categorie seguenti: lettere maiuscole, lettere minuscole, numeri a base 10 e simboli. È possibile esaminare il log degli errori eseguendo il comando docker logs.

    La tabella seguente offre una descrizione dei parametri degli esempi docker run precedenti:

    Parametro Descrizione
    -e "ACCEPT_EULA=Y" Impostare la variabile ACCEPT_EULA su qualsiasi valore per confermare l'accettazione delle condizioni di licenza . Impostazione obbligatoria per l'immagine di SQL Edge.
    -e "MSSQL_SA_PASSWORD=yourStrong(!)Password" Specificare la password complessa composta da almeno 8 caratteri e conforme ai requisiti per le password di SQL Edge di Azure. Impostazione obbligatoria per l'immagine di SQL Edge.
    -p 1433:1433 Eseguire il mapping di una porta TCP nell'ambiente host (primo valore) con una porta TCP nel contenitore (secondo valore). In questo esempio SQL Edge è in ascolto sulla porta TCP 1433 nel contenitore e questo è esposto alla porta 1433 nell'host.
    --name azuresqledge Specificare un nome personalizzato per il contenitore, invece di un nome generato in modo casuale. Se si eseguono più contenitori, non è possibile riutilizzare lo stesso nome.
    -d Eseguire il contenitore in background (daemon)

    Per un elenco completo di tutte le variabili di ambiente di SQL Edge di Azure, vedere Configurare SQL Edge di Azure con le variabili di ambiente. È anche possibile usare un file mssql.conf per configurare i contenitori di SQL Edge.

  3. Per visualizzare i contenitori di Docker, usare il comando docker ps.

    sudo docker ps -a
    
  4. Se nella colonna STATUS è impostato lo statoUp, SQL Edge è in esecuzione nel contenitore e in ascolto sulla porta specificata nella colonna PORTS. Se la colonna STATUS del contenitore di SQL Edge è impostata su Exited, vedere la sezione relativa alla risoluzione dei problemi della documentazione di SQL Edge di Azure.

    Anche il parametro -h (nome host) è utile, ma non viene usato in questa esercitazione per semplicità. Cambia il nome interno del contenitore sostituendolo con un valore personalizzato. È il nome che viene restituito nella query Transact-SQL seguente:

    SELECT @@SERVERNAME,
        SERVERPROPERTY('ComputerNamePhysicalNetBIOS'),
        SERVERPROPERTY('MachineName'),
        SERVERPROPERTY('ServerName');
    

    L'impostazione di -h e --name sullo stesso valore è un buon modo per identificare facilmente il contenitore di destinazione.

  5. Come passaggio finale, cambiare la password dell'amministratore di sistema, perché il valore di MSSQL_SA_PASSWORD è visibile nell'output di ps -eax e viene archiviato nella variabile di ambiente con lo stesso nome. Vedere la procedura descritta di seguito.

Cambiare la password dell'amministratore di sistema

L'account SA è un amministratore di sistema dell'istanza di SQL Edge di Azure creato durante l'installazione. Dopo aver creato il contenitore SQL Edge, la variabile di ambiente MSSQL_SA_PASSWORD specificata diventa individuabile eseguendo echo $MSSQL_SA_PASSWORD nel contenitore. Per motivi di sicurezza, modificare la password dell'amministratore di sistema.

  1. Scegliere una password complessa da usare per l'utente SA.

  2. Usare docker exec per eseguire sqlcmd per modificare la password usando Transact-SQL. Nell'esempio seguente sostituire la vecchia password, <YourStrong!Passw0rd>, e la nuova password, <YourNewStrong!Passw0rd>, con le password personali.

    sudo docker exec -it azuresqledge /opt/mssql-tools/bin/sqlcmd \
       -S localhost -U SA -P "<YourStrong@Passw0rd>" \
       -Q 'ALTER LOGIN SA WITH PASSWORD="<YourNewStrong@Passw0rd>"'
    

Connettersi a SQL Edge di Azure

La procedura seguente usa lo strumento da riga di comando di SQL Edge di Azure, sqlcmd, all'interno del contenitore per stabilire la connessione a SQL Edge.

  1. Usare il comando docker exec -it per avviare una shell Bash interattiva all'interno del contenitore in esecuzione. Nell'esempio seguente, azuresqledge è il nome specificato dal parametro --name quando è stato creato il contenitore.

    sudo docker exec -it azuresqledge "bash"
    
  2. Una volta all'interno del contenitore, eseguire la connessione in locale con sqlcmd. sqlcmd non è incluso nel percorso per impostazione predefinita, quindi occorre specificare il percorso completo.

    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "<YourNewStrong@Passw0rd>"
    

    Suggerimento

    È possibile omettere la password nella riga di comanda perché sia richiesto di essere immessa.

  3. Se la connessione viene eseguita correttamente, il prompt dei comandi sqlcmd sarà: 1>.

Creare i dati e recuperarli tramite query

Nelle sezioni seguenti viene descritto l'uso di sqlcmd e Transact-SQL per creare un nuovo database, aggiungere dati ed eseguire una query.

Creare un nuovo database

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

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

    CREATE DATABASE TestDB;
    GO
    
  2. Nella riga successiva scrivere una query perché vengano restituiti i nomi di tutti database nel server:

    SELECT name from sys.databases;
    GO
    

Inserire i dati

Creare poi una nuova tabella Inventory e inserire due nuove righe.

  1. Dal prompt dei comandi sqlcmd spostare il contesto nel nuovo database TestDB:

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

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

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

    GO
    

Selezionare i dati

A questo punto, eseguire una query per restituire i dati dalla tabella Inventory.

  1. Dal prompt dei comandi sqlcmd immettere una query che restituisca le righe dalla tabella Inventory che ne contiene oltre 152:

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

    GO
    

Uscire dal prompt dei comandi sqlcmd

  1. Per terminare la sessione sqlcmd, digitare QUIT:

    QUIT
    
  2. Per uscire dal prompt dei comandi interattivo nel contenitore, digitare exit. Dopo la chiusura della shell Bash interattiva, il contenitore continua l'esecuzione.

Connettersi dall'esterno del contenitore

È anche possibile connettersi all'istanza di SQL Edge nel computer che esegue Docker da uno strumento esterno Linux, Windows o macOS che supporti le connessioni SQL. Per altre informazioni sulla connessione a un contenitore di SQL Edge dall'esterno, vedere Connettersi ed eseguire query in SQL Edge di Azure.

Rimuovere il contenitore

Se si vuole rimuovere il contenitore di SQL Edge usato in questa esercitazione, eseguire i comandi seguenti:

sudo docker stop azuresqledge
sudo docker rm azuresqledge

Avviso

Se si arresta e si rimuove un contenitore, i dati di SQL Edge eventualmente presenti nel contenitore vengono eliminati in modo definitivo. Se occorre conservare i dati, creare un file di backup e copiarlo all'esterno del contenitore oppure usare una tecnica di persistenza dei dati del contenitore.