Condividi tramite


Distribuire SQL Edge di Azure con Docker

Importante

Azure SQL Edge 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.

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

  • Windows
  • 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 di 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 usa questo provider di archiviazione ed è necessario modificare, vedere le istruzioni e gli avvisi nella documentazione di Docker 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 dell'immagine del contenitore SQL Edge più recente. Per visualizzare tutte le immagini disponibili, vedere la pagina dell'hub Docker azure-sql-edge.

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

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

      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 Azure SQL Edge 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 seguire i criteri password predefiniti di Microsoft database SQL Engine. In caso contrario, il contenitore non può configurare il motore di database SQL e smetterà di funzionare. Per impostazione predefinita, la password deve avere una lunghezza di almeno 8 caratteri e contenere caratteri di tre dei quattro set seguenti: lettere maiuscole, lettere minuscole, cifre base-10 e simboli. È possibile esaminare il log degli errori eseguendo il comando docker logs.

    Nella tabella seguente viene fornita una descrizione dei parametri negli esempi precedenti docker run :

    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 una password complessa che sia almeno otto caratteri e soddisfi i requisiti della password di Azure SQL Edge. 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 su TCP 1433 nel contenitore ed è 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 Azure SQL Edge, vedere Configurare Azure SQL Edge con 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 la colonna STATUS mostra lo stato Up, SQL Edge viene eseguito nel contenitore e in ascolto sulla porta specificata nella colonna PORTS . Se la colonna STATUS per il contenitore DI SQL Edge viene visualizzata Exited, vedere la sezione Risoluzione dei problemi di Azure SQL Documentazione di Edge.

    Il -h parametro (nome host) è utile, ma non viene usato in questa esercitazione per semplicità. Cambia il nome interno del contenitore sostituendolo con un valore personalizzato. Si tratta del nome 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 i passaggi seguenti.

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 MSSQL_SA_PASSWORD variabile di ambiente specificata è 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

I passaggi seguenti usano lo strumento da riga di comando di Azure SQL Edge, sqlcmd, all'interno del contenitore per connettersi a SQL Edge.

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

    sudo docker exec -it azuresqledge "bash"
    
  2. Una volta all'interno del contenitore, connettersi in locale con sqlcmd. sqlcmd non è nel percorso per impostazione predefinita, quindi è necessario 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.

Eseguire la connessione dall'esterno del contenitore

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

Rimuovere il contenitore

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

sudo docker stop azuresqledge
sudo docker rm azuresqledge

Avviso

Arrestare e rimuovere un contenitore elimina definitivamente tutti i dati di SQL Edge nel contenitore. 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.

Passaggi successivi