Azure SQL Edge configureren

Belangrijk

Azure SQL Edge biedt geen ondersteuning meer voor het ARM64-platform.

Azure SQL Edge ondersteunt configuratie via een van de volgende twee opties:

  • Omgevingsvariabelen
  • Een bestand mssql.conf in de map /var/opt/mssql

Notitie

Het instellen van omgevingsvariabelen overschrijft de instellingen die zijn opgegeven in het bestand mssql.conf.

Configureren met behulp van omgevingsvariabelen

Azure SQL Edge maakt verschillende omgevingsvariabelen beschikbaar die kunnen worden gebruikt om de SQL Edge-container te configureren. Deze omgevingsvariabelen zijn een subset van de variabelen die beschikbaar zijn voor SQL Server in Linux. Zie Omgevingsvariabelen voor meer informatie over SQL Server in Linux-omgevingsvariabelen.

De volgende nieuwe omgevingsvariabelen zijn toegevoegd aan Azure SQL Edge.

Omgevingsvariabele Beschrijving Waarden
PlanId Hiermee geeft u de Azure SQL Edge-SKU op die moet worden gebruikt tijdens de initialisatie. Deze omgevingsvariabele is alleen vereist bij het implementeren van Azure SQL Edge met behulp van Azure IoT Edge. asde-developer-on-iot-edge of asde-premium-on-iot-edge
MSSQL_TELEMETRY_ENABLED Het verzamelen van gebruiks- en diagnostische gegevens in- of uitschakelen. TRUE of FALSE
MSSQL_TELEMETRY_DIR Hiermee stelt u de doelmap in voor de auditbestanden voor het verzamelen van gebruiks- en diagnostische gegevens. Maplocatie in SQL Edge-container. Deze map kan worden toegewezen aan een hostvolume met behulp van koppelpunten of gegevensvolumes.
MSSQL_PACKAGE Hiermee geeft u de locatie van het dacpac- of bacpac-pakket dat moet worden geïmplementeerd. Map, bestand of SAS-URL met de dacpac- of bacpac-pakketten. Zie SQL Database DACPAC- en BACPAC-pakketten implementeren in SQL Edge voor meer informatie.

De volgende omgevingsvariabele van SQL Server in Linux wordt niet ondersteund voor Azure SQL Edge. Indien gedefinieerd, wordt deze omgevingsvariabele genegeerd tijdens de initialisatie van de container.

Omgevingsvariabele Beschrijving
MSSQL_ENABLE_HADR Schakel beschikbaarheidsgroep in. Is bijvoorbeeld 1 ingeschakeld en 0 is uitgeschakeld.

Belangrijk

De MSSQL_PID omgevingsvariabele voor SQL Edge accepteert alleen Premium en Developer als geldige waarden. Azure SQL Edge biedt geen ondersteuning voor initialisatie met behulp van een productcode.

De omgevingsvariabelen opgeven

Geef omgevingsvariabelen op voor SQL Edge wanneer u de service implementeert via Azure Portal. U kunt ze toevoegen in de sectie Omgevingsvariabelen van de module-implementatie of als onderdeel van de opties voor het maken van containers.

Voeg waarden toe in omgevingsvariabelen.

Screenshot of set by using environment variables list.

Voeg waarden toe in Opties voor het maken van containers.

Screenshot of set by using container create options.

Notitie

In de niet-verbonden implementatiemodus kunnen omgevingsvariabelen worden opgegeven met behulp van of -e--env de --env-file optie van de docker run opdracht.

Configureren met behulp van een mssql.conf bestand

Azure SQL Edge bevat niet het configuratiehulpprogramma mssql-conf, zoals SQL Server in Linux. U moet het bestand mssql.conf handmatig configureren en dit in het permanente opslagstation plaatsen dat is toegewezen aan de map /var/opt/mssql/ in de SQL Edge-module. Wanneer u SQL Edge implementeert vanuit Azure Marketplace, wordt deze toewijzing opgegeven als de optie Koppelen in de opties voor het maken van containers.

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

De volgende nieuwe mssql.conf-opties zijn toegevoegd voor Azure SQL Edge.

Optie Omschrijving
customerfeedback Kies of SQL Server feedback naar Microsoft verzendt. Zie Het verzamelen van gebruiks- en diagnostische gegevens uitschakelen voor meer informatie
userrequestedlocalauditdirectory Hiermee stelt u de doelmap in voor de auditbestanden voor het verzamelen van gebruiks- en diagnostische gegevens. Zie Lokale controle van het verzamelen van gebruiks- en diagnostische gegevens voor meer informatie

De volgende mssql.conf-opties zijn niet van toepassing op SQL Edge:

Optie Omschrijving
Feedback Kies of SQL Server feedback naar Microsoft verzendt.
Database-e-mailprofiel Stel het standaarddatabase-e-mailprofiel in voor SQL Server in Linux.
Hoge beschikbaarheid Beschikbaarheidsgroepen inschakelen.
Microsoft Distributed Transaction Coordinator MSDTC configureren en problemen oplossen in Linux. Aanvullende configuratieopties voor gedistribueerde transacties worden niet ondersteund voor SQL Edge. Zie MSDTC configureren voor meer informatie over deze aanvullende configuratieopties.
ML Services-EULA's Accepteer R- en Python-EULA's voor Azure Machine Learning-pakketten. Alleen van toepassing op SQL Server 2019.
uitgaandenetworkaccess Schakel uitgaande netwerktoegang in voor Machine Learning Services R-, Python- en Java-extensies.

Het volgende voorbeeldbestand mssql.conf werkt voor SQL Edge. Zie de indeling mssql.conf voor meer informatie over de indeling voor een mssql.conf bestand.

[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

Azure SQL Edge uitvoeren als niet-hoofdgebruiker

Standaard worden de Azure SQL Edge-containers uitgevoerd met een niet-hoofdgebruiker/-groep. Wanneer deze wordt geïmplementeerd via Azure Marketplace (of met behulp van docker run), tenzij er een andere gebruiker/groep is opgegeven, worden SQL Edge-containers gestart als de mssql-gebruiker (niet-hoofdgebruiker). Als u tijdens de implementatie een andere niet-hoofdgebruiker wilt opgeven, voegt u het *"User": "<name|uid>[:<group|gid>]"* sleutel-waardepaar toe onder opties voor het maken van containers. In het volgende voorbeeld is SQL Edge geconfigureerd om te starten als de gebruiker *IoTAdmin*.

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

Als u de niet-hoofdgebruiker toegang wilt geven tot DB-bestanden die zich op gekoppelde volumes bevinden, moet u ervoor zorgen dat de gebruiker/groep waaronder u de container uitvoert, lees- en schrijfmachtigingen heeft voor de permanente bestandsopslag. In het volgende voorbeeld stellen we de niet-hoofdgebruiker in met user_id10001 als eigenaar van de bestanden.

chown -R 10001:0 <database file dir>

Upgrade van eerdere CTP-releases

Eerdere CTP's van Azure SQL Edge zijn geconfigureerd om te worden uitgevoerd als de hoofdgebruikers. De volgende opties zijn beschikbaar bij het upgraden van eerdere CTP's.

  • Blijf de hoofdgebruiker gebruiken: als u de hoofdgebruiker wilt blijven gebruiken, voegt u het *"User": "0:0"* sleutel-waardepaar toe onder opties voor het maken van containers.

  • Gebruik de standaard mssql-gebruiker : als u de standaard mssql-gebruiker wilt gebruiken, voert u de volgende stappen uit:

    • Voeg een gebruiker toe met de naam mssql op de Docker-host. In het onderstaande voorbeeld voegen we een gebruiker mssql toe met id 10001. Deze gebruiker wordt ook toegevoegd aan de hoofdgroep.

      sudo useradd -M -s /bin/bash -u 10001 -g 0 mssql
      
    • Wijzig de machtiging voor het map-/koppelvolume waarin het databasebestand zich bevindt

      sudo chgrp -R 0 /var/lib/docker/volumes/kafka_sqldata/
      sudo chmod -R g=u /var/lib/docker/volumes/kafka_sqldata/
      
  • Een ander niet-hoofdgebruikersaccount gebruiken : als u een ander niet-hoofdgebruikersaccount wilt gebruiken

    • Werk de opties voor het maken van containers bij om sleutel-waardepaar op *"User": "user_name | user_id* te geven onder opties voor het maken van containers. Vervang user_name of user_id door een werkelijke user_name of user_id van uw Docker-host.
    • Wijzig de machtigingen voor het map-/koppelvolume.

Uw gegevens behouden

Uw Azure SQL Edge-configuratiewijzigingen en databasebestanden blijven behouden in de container, zelfs als u de container opnieuw opstart met docker stop en docker start. Als u de container echter docker rmverwijdert, wordt alles in de container verwijderd, inclusief Azure SQL Edge en uw databases. In de volgende sectie wordt uitgelegd hoe u gegevensvolumes gebruikt om uw databasebestanden te behouden, zelfs als de bijbehorende containers worden verwijderd.

Belangrijk

Voor Azure SQL Edge is het essentieel dat u inzicht krijgt in gegevenspersistentie in Docker. Naast de discussie in deze sectie raadpleegt u de documentatie van Docker over het beheren van gegevens in Docker-containers.

Een hostmap koppelen als gegevensvolume

De eerste optie is het koppelen van een map op uw host als een gegevensvolume in uw container. Gebruik hiervoor de docker run opdracht met de -v <host directory>:/var/opt/mssql vlag. Hierdoor kunnen de gegevens worden hersteld tussen containeruitvoeringen.

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

Met deze techniek kunt u ook de bestanden op de host buiten Docker delen en weergeven.

Belangrijk

Hostvolumetoewijzing voor Docker in Windows biedt momenteel geen ondersteuning voor het toewijzen van de volledige /var/opt/mssql map. U kunt echter een submap toewijzen, bijvoorbeeld /var/opt/mssql/data aan uw hostcomputer.

Belangrijk

Hostvolumetoewijzing voor Docker in macOS met de Azure SQL Edge-installatiekopie wordt momenteel niet ondersteund. Gebruik in plaats daarvan gegevensvolumecontainers. Deze beperking is specifiek voor de /var/opt/mssql map. Lezen vanuit een gekoppelde map werkt prima. U kunt bijvoorbeeld een hostmap koppelen met behulp van -v macOS en een back-up herstellen vanuit een .bak bestand dat zich op de host bevindt.

Gegevensvolumecontainers gebruiken

De tweede optie is het gebruik van een gegevensvolumecontainer. U kunt een gegevensvolumecontainer maken door een volumenaam op te geven in plaats van een hostmap met de -v parameter. In het volgende voorbeeld wordt een gedeeld gegevensvolume gemaakt met de naam 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

Notitie

Deze techniek voor het impliciet maken van een gegevensvolume in de run-opdracht werkt niet met oudere versies van Docker. In dat geval gebruikt u de expliciete stappen die worden beschreven in de Docker-documentatie, het maken en koppelen van een gegevensvolumecontainer.

Zelfs als u deze container stopt en verwijdert, blijft het gegevensvolume behouden. U kunt deze weergeven met de docker volume ls opdracht.

docker volume ls

Als u vervolgens een andere container met dezelfde volumenaam maakt, gebruikt de nieuwe container dezelfde Azure SQL Edge-gegevens in het volume.

Gebruik de docker volume rm opdracht om een gegevensvolumecontainer te verwijderen.

Waarschuwing

Als u de gegevensvolumecontainer verwijdert, worden alle Azure SQL Edge-gegevens in de container definitief verwijderd.

Volgende stappen