Configurare SQL Edge di Azure
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.
SQL Edge di Azure supporta la configurazione tramite una delle due opzioni seguenti:
- Variabili di ambiente
- Un file mssql.conf presente nella cartella /var/opt/mssql
Nota
Le impostazioni relative alle variabili di ambiente sostituiscono le impostazioni specificate nel file mssql.conf
.
Configurare con le variabili di ambiente
SQL Edge di Azure espone diverse variabili di ambiente con cui è possibile configurare il contenitore SQL Edge. Queste variabili di ambiente rappresentano, in realtà, un subset di quelle disponibili per SQL Server in Linux. Per altre informazioni sulle variabili di ambiente di SQL Server in Linux, vedere Variabili di ambiente.
In SQL Edge di Azure sono state aggiunte le nuove variabili di ambiente seguenti.
Variabile di ambiente | Descrizione | Valori |
---|---|---|
PlanId | Specifica lo SKU di SQL Edge di Azure da usare durante l'inizializzazione. Questa variabile di ambiente è necessaria solo quando si distribuisce SQL Edge di Azure con Azure IoT Edge. | asde-developer-on-iot-edge o asde-premium-on-iot-edge |
MSSQL_TELEMETRY_ENABLED | Consente di abilitare o disabilitare la raccolta di dati di diagnostica e utilizzo. | TRUE o FALSE |
MSSQL_TELEMETRY_DIR | Imposta la directory di destinazione per i file di controllo di raccolta dati di utilizzo e diagnostica. | Percorso della cartella all'interno del contenitore SQL Edge. È possibile eseguire il mapping di questa cartella a un volume host usando punti montaggio o volumi di dati. |
MSSQL_PACKAGE | Specifica il percorso del pacchetto dacpac o bacpac da distribuire. | Cartella, file o URL di firma di accesso condiviso contenente i pacchetti dacpac o bacpac. Per altre informazioni, vedere Distribuire pacchetti DACPAC e BACPAC del database SQL in SQL Edge. |
La variabile di ambiente di SQL Server in Linux seguente non è supportata per SQL Edge di Azure. Se definita, questa variabile di ambiente viene ignorata durante l'inizializzazione del contenitore.
Variabile di ambiente | Descrizione |
---|---|
MSSQL_ENABLE_HADR | Consente di abilitare un gruppo di disponibilità. Ad esempio, 1 è abilitato e 0 è disabilitato. |
Importante
La variabile di ambiente MSSQL_PID per SQL Edge accetta solo Premium e Developer come valori validi. SQL Edge di Azure non supporta l'inizializzazione tramite un codice Product Key.
Specificare le variabili di ambiente
Specificare le variabili di ambiente per SQL Edge quando si distribuisce il servizio tramite il portale di Azure. È possibile aggiungerle nella sezione Variabili di ambiente della distribuzione del modulo o come parte delle Opzioni di creazione del contenitore.
Aggiungere valori in Variabili di ambiente.
Aggiungere valori in Opzioni di creazione del contenitore.
Nota
Nella modalità di distribuzione disconnessa è possibile specificare variabili di ambiente usando l'opzione -e
o --env
o--env-file
del comando docker run
.
Configurare usando un file mssql.conf
A differenza di SQL Server in Linux, SQL Edge di Azure non include l'utilità di configurazione mssql-conf. È necessario configurare manualmente il file mssql.conf e inserirlo nell'unità di archiviazione persistente mappata alla cartella /var/opt/mssql/ nel modulo SQL Edge. Quando si distribuisce SQL Edge tramite l'hub IoT di Azure, questo mapping viene specificato come opzioneMontaggi in Opzioni di creazione del contenitore.
{
"Mounts": [
{
"Type": "volume",
"Source": "sqlvolume",
"Target": "/var/opt/mssql"
}
]
}
Sono state aggiunte le nuove opzioni di mssql.conf seguenti per SQL Edge di Azure.
Opzione | Descrizione |
---|---|
customerfeedback | Consente di scegliere se SQL Server invia feedback a Microsoft. Per altre informazioni, vedere Disabilitare la raccolta dati di diagnostica e utilizzo |
userrequestedlocalauditdirectory | Imposta la directory di destinazione per i file di controllo di raccolta dati di utilizzo e diagnostica. Per altre informazioni, vedere Controllo locale della raccolta dati di diagnostica e utilizzo |
Le opzioni di mssql.conf seguenti non sono applicabili a SQL Edge:
Opzione | Descrizione |
---|---|
Commenti e suggerimenti degli utenti | Consente di scegliere se SQL Server invia feedback a Microsoft. |
Profilo di posta elettronica database | Impostare il profilo predefinito di Posta elettronica database per SQL Server in Linux. |
Disponibilità elevata | Abilitare i gruppi di disponibilità. |
Microsoft Distributed Transaction Coordinator | Configurare e risolvere i problemi relativi a MSDTC in Linux. Non sono inoltre supportate per SQL Edge le opzioni di configurazione aggiuntive relative alle transazioni distribuite. Per altre informazioni su queste opzioni di configurazione aggiuntive, vedere Configurare MSDTC |
Contratti di licenza con l'utente finale di ML Services | Accettare i contratti di licenza con l'utente finale di R e Python per i pacchetti di Azure Machine Learning. Si applica solo a SQL Server 2019. |
outboundnetworkaccess | Abilitare l'accesso alla rete in uscita per le estensioni R, Python e Java di Machine Learning Services. |
Il file mssql.conf di esempio seguente funziona per SQL Edge. Per altre informazioni sul formato per un file mssql.conf
, vedere Formato di mssql.conf.
[EULA]
accepteula = Y
[coredump]
captureminiandfull = true
coredumptype = full
[filelocation]
defaultbackupdir = /var/opt/mssql/backup/
defaultdatadir = /var/opt/mssql/data/
defaultdumpdir = /var/opt/mssql/data/
defaultlogdir = /var/opt/mssql/log/
[language]
lcid = 1033
[memory]
memorylimitmb = 6144
[sqlagent]
errorlogfile = /var/opt/mssql/log/sqlagentlog.log
errorlogginglevel = 7
[traceflag]
traceflag0 = 3604
traceflag1 = 3605
traceflag2 = 1204
Eseguire SQL Edge di Azure come utente non radice
Per impostazione predefinita, i contenitori di SQL Edge di Azure vengono eseguiti con un utente/gruppo non radice. Quando vengono distribuiti tramite l'hub IoT di Azure (o usando docker run
), a meno che non venga specificato un altro utente/gruppo, i contenitori di SQL Edge vengono avviati come utente mssql (non radice). Per specificare un utente non radice diverso durante la distribuzione, aggiungere la coppia chiave-valore *"User": "<name|uid>[:<group|gid>]"*
nelle opzioni di creazione del contenitore. Nell'esempio seguente SQL Edge è configurato per l'avvio come utente *IoTAdmin*
.
{
..
..
..
"User": "IoTAdmin",
"Env": [
"MSSQL_AGENT_ENABLED=TRUE",
"ClientTransportType=AMQP_TCP_Only",
"MSSQL_PID=Premium"
]
}
Per consentire all'utente non radice di accedere ai file di database in volumi montati, assicurarsi che l'utente o il gruppo con cui viene eseguito il contenitore abbia autorizzazioni di lettura e scrittura per l'archivio file permanente. Nell'esempio seguente l'utente non radice viene impostato con user_id
di 10001
come proprietario dei file.
chown -R 10001:0 <database file dir>
Eseguire l'aggiornamento dalle versioni CTP precedenti
Le versioni CTP precedenti di SQL Edge di Azure erano configurate per l'esecuzione come utenti radice. Quando si esegue l'aggiornamento da versioni CTP precedenti, sono disponibili le opzioni seguenti.
Continuare a usare l'utente radice: per continuare a usare l'utente radice, aggiungere la coppia chiave-valore
*"User": "0:0"*
in Opzioni di creazione del contenitore.Usare l'utente mssql predefinito : per usare l'utente mssql predefinito, seguire questa procedura:
Aggiungere un utente denominato
mssql
nell'host Docker. Nell'esempio seguente viene aggiunto un utente mssql con ID 10001. Questo utente viene aggiunto anche al gruppo radice.sudo useradd -M -s /bin/bash -u 10001 -g 0 mssql
Modificare l'autorizzazione per il volume di directory/montaggio in cui risiede il file di database
sudo chgrp -R 0 /var/lib/docker/volumes/kafka_sqldata/ sudo chmod -R g=u /var/lib/docker/volumes/kafka_sqldata/
Usare un account utente non radice diverso: per usare un account utente diverso non radice
- Aggiornare le opzioni di creazione del contenitore per specificare l'aggiunta della coppia chiave-valore
*"User": "user_name | user_id*
nelle opzioni di creazione del contenitore. Sostituire user_name o user_id con un user_name o user_id effettivo dall'host Docker. - Modificare le autorizzazioni per il volume di directory/montaggio.
- Aggiornare le opzioni di creazione del contenitore per specificare l'aggiunta della coppia chiave-valore
Rendere persistenti i dati
Le modifiche apportate alla configurazione di SQL Edge di Azure e i file di database vengono salvati in modo permanente nel contenitore anche se il contenitore viene riavviato con docker stop
e docker start
. Tuttavia, se si rimuove il contenitore con docker rm
viene eliminato tutto il contenuto al suo interno, inclusi SQL Edge di Azure e i database. La sezione seguente illustra come usare i volumi di dati per rendere persistenti i file di database anche se vengono eliminati i contenitori associati.
Importante
Per SQL Edge di Azure, è fondamentale comprendere la persistenza dei dati in Docker. Oltre alle informazioni in questa sezione, vedere la documentazione di Docker su come gestire i dati nei contenitori Docker.
Montare una directory host come volume di dati
La prima opzione consiste nel montare una directory nell'host come volume di dati nel contenitore. A tale scopo, usare il comando docker run
con il flag -v <host directory>:/var/opt/mssql
. In questo modo è possibile ripristinare i dati tra le esecuzioni dei contenitori.
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1433:1433 -v <host directory>/data:/var/opt/mssql/data -v <host directory>/log:/var/opt/mssql/log -v <host directory>/secrets:/var/opt/mssql/secrets -d mcr.microsoft.com/azure-sql-edge
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1433:1433 -v <host directory>/data:/var/opt/mssql/data -v <host directory>/log:/var/opt/mssql/log -v <host directory>/secrets:/var/opt/mssql/secrets -d mcr.microsoft.com/azure-sql-edge
Questa tecnica consente anche di condividere e visualizzare i file nell'host all'esterno di Docker.
Importante
Il mapping del volume host per Docker in Windows non supporta attualmente il mapping della directory /var/opt/mssql
completa. È tuttavia possibile eseguire il mapping di una sottodirectory, ad esempio /var/opt/mssql/data
al computer host.
Importante
Il mapping del volume host per Docker in macOS con l'immagine di SQL Edge di Azure non è attualmente supportato. Usare invece i contenitori di volumi di dati. Questa restrizione è specifica per la directory /var/opt/mssql
. La lettura da una directory montata funziona correttamente. Ad esempio, è possibile montare una directory host usando -v
in macOS e ripristinare un backup da un file con estensione .bak
che risiede nell'host.
Usare i contenitori di volumi di dati
La seconda opzione consiste nell'usare un contenitore di volumi di dati. È possibile creare un contenitore di volumi di dati specificando un nome di volume anziché una directory host con il parametro -v
. Nell'esempio seguente viene creato un volume di dati condiviso denominato sqlvolume.
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1433:1433 -v sqlvolume:/var/opt/mssql -d mcr.microsoft.com/azure-sql-edge
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1433:1433 -v sqlvolume:/var/opt/mssql -d mcr.microsoft.com/azure-sql-edge
Nota
Questa tecnica per la creazione implicita di un volume di dati nel comando run non funziona con le versioni precedenti di Docker. In tal caso, usare i passaggi espliciti descritti nella documentazione di Docker, in Creating and mounting a data volume container (Creazione e montaggio di un contenitore di volumi di dati).
Anche se si arresta e rimuove il contenitore, il volume di dati è persistente. È possibile visualizzarlo con il comando docker volume ls
.
docker volume ls
Se successivamente si crea un altro contenitore con lo stesso nome di volume, il nuovo contenitore userà gli stessi dati di SQL Edge di Azure contenuti nel volume.
Per rimuovere un contenitore di volumi di dati, usare il comando docker volume rm
.
Avviso
Se si elimina il contenitore del volume di dati, tutti i dati di SQL Edge di Azure nel contenitore verranno eliminati definitivamente.