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'avviso 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
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.
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=<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=<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=<password>" Specificare una password complessa con almeno otto caratteri e soddisfare i requisiti della password. 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.
Per visualizzare i contenitori di Docker, usare il comando
docker ps
.sudo docker ps -a
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.Come passaggio finale, cambiare la password dell'amministratore di sistema, perché il valore di
MSSQL_SA_PASSWORD
è visibile nell'output dips -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.
Scegliere una password complessa da usare per l'utente SA.
Usare
docker exec
per eseguire sqlcmd per modificare la password usando Transact-SQL. Nell'esempio seguente sostituire la vecchia password,<old-password>
, e la nuova password,<new-password>
, con le password personali.sudo docker exec -it azuresqledge /opt/mssql-tools/bin/sqlcmd \ -S localhost -U SA -P "<old-password>" \ -Q 'ALTER LOGIN SA WITH PASSWORD="<new-password>"'
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.
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"
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 "<password>"
Suggerimento
È possibile omettere la password nella riga di comanda perché sia richiesto di essere immessa.
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
.
Dal prompt dei comandi sqlcmd incollare il comando seguente di Transact-SQL per creare un database di test:
CREATE DATABASE TestDB; GO
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.
Dal prompt dei comandi sqlcmd spostare il contesto nel nuovo database
TestDB
:USE TestDB;
Creare una nuova tabella denominata
Inventory
:CREATE TABLE Inventory ( id INT, name NVARCHAR(50), quantity INT );
Inserire i dati nella nuova tabella:
INSERT INTO Inventory VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154);
Digitare
GO
per eseguire i comandi precedenti:GO
Selezionare i dati
A questo punto, eseguire una query per restituire i dati dalla tabella Inventory
.
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;
Eseguire il comando seguente:
GO
Uscire dal prompt dei comandi sqlcmd
Per terminare la sessione sqlcmd, digitare
QUIT
:QUIT
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.