Konfigurera Azure SQL Edge

Viktigt!

Azure SQL Edge stöder inte längre ARM64-plattformen.

Azure SQL Edge stöder konfiguration via något av följande två alternativ:

  • Miljövariabler
  • En mssql.conf-fil placerad i mappen /var/opt/mssql

Kommentar

Om du anger miljövariabler åsidosätts de inställningar som anges i filen mssql.conf.

Konfigurera med hjälp av miljövariabler

Azure SQL Edge exponerar flera olika miljövariabler som kan användas för att konfigurera SQL Edge-containern. Dessa miljövariabler är en delmängd av de som är tillgängliga för SQL Server på Linux. Mer information om SQL Server på Linux miljövariabler finns i Miljövariabler.

Följande nya miljövariabler har lagts till i Azure SQL Edge.

Miljövariabel Beskrivning Värden
PlanId Anger den Azure SQL Edge-SKU som ska användas under initieringen. Den här miljövariabeln krävs bara när du distribuerar Azure SQL Edge med Hjälp av Azure IoT Edge. asde-developer-on-iot-edge eller asde-premium-on-iot-edge
MSSQL_TELEMETRY_ENABLED Aktivera eller inaktivera insamling av användnings- och diagnostikdata. TRUE eller FALSE
MSSQL_TELEMETRY_DIR Anger målkatalogen för granskningsfilerna för användnings- och diagnostikdatainsamling. Mappplats i SQL Edge-containern. Den här mappen kan mappas till en värdvolym med antingen monteringspunkter eller datavolymer.
MSSQL_PACKAGE Anger platsen för det dacpac- eller bacpac-paket som ska distribueras. Mapp, fil eller SAS-URL som innehåller dacpac- eller bacpac-paketen. Mer information finns i Distribuera SQL Database DACPAC- och BACPAC-paket i SQL Edge.

Följande SQL Server på Linux miljövariabel stöds inte för Azure SQL Edge. Om den här miljövariabeln definieras ignoreras den under containerinitiering.

Miljövariabel beskrivning
MSSQL_ENABLE_HADR Aktivera tillgänglighetsgrupp. Till exempel 1 är aktiverad och 0 inaktiverad.

Viktigt!

Miljövariabeln MSSQL_PID för SQL Edge accepterar endast Premium och Developer som giltiga värden. Azure SQL Edge stöder inte initiering med hjälp av en produktnyckel.

Ange miljövariablerna

Ange miljövariabler för SQL Edge när du distribuerar tjänsten via Azure-portalen. Du kan lägga till dem i avsnittet Miljövariabler i moduldistributionen eller som en del av alternativen för att skapa containrar.

Lägg till värden i miljövariabler.

Screenshot of set by using environment variables list.

Lägg till värden i Alternativ för att skapa container.

Screenshot of set by using container create options.

Kommentar

I frånkopplat distributionsläge kan miljövariabler anges med hjälp -e--env av eller eller --env-file alternativet för docker run kommandot.

Konfigurera med hjälp av en mssql.conf fil

Azure SQL Edge innehåller inte konfigurationsverktyget mssql-conf som SQL Server på Linux gör. Du måste konfigurera filen mssql.conf manuellt och placera den på den beständiga lagringsenhet som är mappad till mappen /var/opt/mssql/ i SQL Edge-modulen. När du distribuerar SQL Edge från Azure Marketplace anges den här mappningen som alternativet Monteringar i alternativen för att skapa containrar.

{
  "Mounts": [
    {
      "Type": "volume",
      "Source": "sqlvolume",
      "Target": "/var/opt/mssql"
    }
  ]
}

Följande nya mssql.conf-alternativ har lagts till för Azure SQL Edge.

Alternativ Description
customerfeedback Välj om SQL Server ska skicka feedback till Microsoft. Mer information finns i Inaktivera insamling av användnings- och diagnostikdata
userrequestedlocalauditdirectory Anger målkatalogen för granskningsfilerna för användnings- och diagnostikdatainsamling. Mer information finns i Lokal granskning av användning och insamling av diagnostikdata

Följande mssql.conf-alternativ gäller inte för SQL Edge:

Alternativ Description
Kundfeedback Välj om SQL Server ska skicka feedback till Microsoft.
E-postprofil för databas Ange standarddatabasens e-postprofil för SQL Server på Linux.
Hög tillgänglighet Aktivera tillgänglighetsgrupper.
Microsoft Distributed Transaction Coordinator Konfigurera och felsöka MSDTC i Linux. Ytterligare distribuerade transaktionsrelaterade konfigurationsalternativ stöds inte för SQL Edge. Mer information om dessa ytterligare konfigurationsalternativ finns i Konfigurera MSDTC.
ML Services EULAs Acceptera R- och Python EULA:er för Azure Machine Learning-paket. Gäller endast för SQL Server 2019.
outboundnetworkaccess Aktivera utgående nätverksåtkomst för Machine Learning Services R-, Python- och Java-tillägg.

Följande mssql.conf-exempelfil fungerar för SQL Edge. Mer information om formatet för en mssql.conf fil finns i mssql.conf-format.

[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

Kör Azure SQL Edge som icke-rotanvändare

Som standard körs Azure SQL Edge-containrarna med en icke-rotanvändare/grupp. När sql Edge-containrar distribueras via Azure Marketplace (eller använder docker run), såvida inte en annan användare/grupp har angetts, startar de som mssql-användare (icke-rot). Om du vill ange en annan icke-rotanvändare under distributionen *"User": "<name|uid>[:<group|gid>]"* lägger du till nyckel/värde-paret under alternativ för att skapa containrar. I följande exempel är SQL Edge konfigurerat att starta som användaren *IoTAdmin*.

{
    ..
    ..
    ..
    "User": "IoTAdmin",
    "Env": [
        "MSSQL_AGENT_ENABLED=TRUE",
        "ClientTransportType=AMQP_TCP_Only",
        "MSSQL_PID=Premium"
    ]
}

Om du vill tillåta att icke-rotanvändaren får åtkomst till DB-filer som finns på monterade volymer kontrollerar du att användaren/gruppen som du kör containern under har läs- och skrivbehörigheter för den beständiga fillagringen. I följande exempel anger vi icke-rotanvändaren med user_id10001 som ägare till filerna.

chown -R 10001:0 <database file dir>

Uppgradera från tidigare CTP-versioner

Tidigare CTP:er för Azure SQL Edge har konfigurerats att köras som rotanvändare. Följande alternativ är tillgängliga när du uppgraderar från tidigare CTP:er.

  • Fortsätt att använda rotanvändaren – Om du vill fortsätta använda rotanvändaren lägger du till *"User": "0:0"* nyckel/värde-paret under alternativ för att skapa containrar.

  • Använd standardanvändaren mssql – Följ dessa steg om du vill använda mssql-standardanvändaren:

    • Lägg till en användare med namnet mssql på Docker-värden. I exemplet nedan lägger vi till en användare mssql med ID 10001. Den här användaren läggs också till i rotgruppen.

      sudo useradd -M -s /bin/bash -u 10001 -g 0 mssql
      
    • Ändra behörigheten på den katalog/monteringsvolym där databasfilen finns

      sudo chgrp -R 0 /var/lib/docker/volumes/kafka_sqldata/
      sudo chmod -R g=u /var/lib/docker/volumes/kafka_sqldata/
      
  • Använda ett annat icke-rotanvändarkonto – Så här använder du ett annat användarkonto som inte är rotkonto

    • Uppdatera alternativen för att skapa containern för att ange lägg till *"User": "user_name | user_id* nyckel/värde-par under alternativ för att skapa containrar. Ersätt user_name eller user_id med en faktisk user_name eller user_id från Docker-värden.
    • Ändra behörigheterna för katalogen/monteringsvolymen.

Spara dina data

Dina Azure SQL Edge-konfigurationsändringar och databasfiler sparas i containern även om du startar om containern med docker stop och docker start. Men om du tar bort containern med docker rmtas allt i containern bort, inklusive Azure SQL Edge och dina databaser. I följande avsnitt beskrivs hur du använder datavolymer för att spara dina databasfiler även om de associerade containrarna tas bort.

Viktigt!

För Azure SQL Edge är det viktigt att du förstår datapersistens i Docker. Förutom diskussionen i det här avsnittet kan du läsa Dockers dokumentation om hur du hanterar data i Docker-containrar.

Montera en värdkatalog som datavolym

Det första alternativet är att montera en katalog på värden som en datavolym i containern. Det gör du genom att använda docker run kommandot med -v <host directory>:/var/opt/mssql flaggan . Detta gör att data kan återställas mellan containerkörningar.

docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -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=<YourStrong!Passw0rd>" -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

Med den här tekniken kan du också dela och visa filerna på värden utanför Docker.

Viktigt!

Värdvolymmappning för Docker i Windows stöder för närvarande inte mappning av hela /var/opt/mssql katalogen. Du kan dock mappa en underkatalog, till exempel /var/opt/mssql/data till värddatorn.

Viktigt!

Värdvolymmappning för Docker på macOS med Azure SQL Edge-avbildningen stöds inte just nu. Använd datavolymcontainrar i stället. Den här begränsningen /var/opt/mssql är specifik för katalogen. Läsning från en monterad katalog fungerar bra. Du kan till exempel montera en värdkatalog med hjälp av -v macOS och återställa en säkerhetskopia från en .bak fil som finns på värden.

Använda datavolymcontainrar

Det andra alternativet är att använda en datavolymcontainer. Du kan skapa en datavolymcontainer genom att ange ett volymnamn i stället för en värdkatalog med parametern -v . I följande exempel skapas en delad datavolym med namnet sqlvolume.

docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -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=<YourStrong!Passw0rd>" -p 1433:1433 -v sqlvolume:/var/opt/mssql -d mcr.microsoft.com/azure-sql-edge

Kommentar

Den här tekniken för att implicit skapa en datavolym i körningskommandot fungerar inte med äldre versioner av Docker. I så fall använder du de explicita steg som beskrivs i Docker-dokumentationen, Skapa och montera en datavolymcontainer.

Även om du stoppar och tar bort den här containern bevaras datavolymen. Du kan visa den med docker volume ls kommandot .

docker volume ls

Om du sedan skapar en annan container med samma volymnamn använder den nya containern samma Azure SQL Edge-data som finns i volymen.

Om du vill ta bort en datavolymcontainer använder du docker volume rm kommandot .

Varning

Om du tar bort datavolymcontainern tas alla Azure SQL Edge-data i containern bort permanent .

Nästa steg