Bereitstellen von Azure SQL Edge mit Docker

Wichtig

Azure SQL Edge n unterstützt die ARM64-Plattform nicht mehr.

In diesem Schnellstart verwenden Sie Docker, um das Azure SQL Edge-Containerimage abzurufen und auszuführen. Stellen Sie anschließend eine Verbindung mit sqlcmd her, um Ihre erste Datenbank zu erstellen und Abfragen auszuführen.

Dieses Image besteht aus auf Ubuntu 18.04 basierendem SQL Edge. Es kann unter Linux mit der Docker-Engine 1.8 und höher verwendet werden.

Azure SQL Edge-Container werden auf den folgenden Plattformen für Produktionsworkloads nicht unterstützt:

  • Windows
  • macOS
  • Azure IoT Edge für Linux unter Windows (EFLOW)

Voraussetzungen

  • Docker Engine 1.8 oder höher unter einer beliebigen unterstützten Linux-Distribution. Weitere Informationen finden Sie unter Install Docker (Installieren von Docker). Da die SQL Edge-Images auf Ubuntu 18.04 basieren, empfiehlt es sich, einen Docker-Host mit Ubuntu 18.04 zu verwenden.
  • Docker-Speichertreiber overlay2. Dies ist die Standardeinstellung für die meisten Benutzer. Wenn Sie feststellen, dass Sie diesen Speicheranbieter nicht verwenden und ihn ändern müssen, finden Sie weitere Informationen und Warnungen in der Docker-Dokumentation zur Konfiguration von „overlay2“.
  • Mindestens 10 GB freier Speicherplatz.
  • Mindestens 1 GB RAM.
  • Hardwareanforderungen für Azure SQL Edge.

Hinweis

Für die Bash-Befehle in diesem Artikel wird sudo verwendet. Wenn Sie sudo nicht zum Ausführen von Docker verwenden möchten, können Sie eine Docker-Gruppe konfigurieren und dieser Gruppe Benutzer hinzufügen. Weitere Informationen finden Sie unter Post-installation steps for Linux (Schritte nach der Installation unter Linux).

Übertragen mithilfe von Pull und Ausführen von Containerimages

  1. Pullen Sie das Azure SQL Edge-Containerimage aus Microsoft Container Registry.

    sudo docker pull mcr.microsoft.com/azure-sql-edge:latest
    

    Der vorherige Befehl pullt die neuesten SQL Edge-Containerimages. Alle verfügbaren Images finden Sie auf der Docker Hub-Seite zu azure-sql-egde.

  2. Verwenden Sie zum Ausführen des Containerimages mit Docker den folgenden Befehl in einer Bash-Shell:

    • Starten einer Azure SQL Edge-Instanz, die als Developer Edition ausgeführt wird:

      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
      
    • Starten einer Azure SQL Edge-Instanz, die als Premium Edition ausgeführt wird:

      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
      

    Wichtig

    Das Kennwort muss der Standardrichtlinie für Kennwörter für die Microsoft SQL-Datenbank-Engine entsprechen. Ist dies nicht der Fall, kann der Container die SQL-Datenbank-Engine nicht einrichten und funktioniert nicht mehr. Ein Standardkennwort enthält mindestens acht Zeichen, die aus drei der folgenden vier Kategorien stammen müssen: Großbuchstaben, Kleinbuchstaben, Grundzahlen (0–9) und Symbole. Mit dem Befehl docker logs können Sie das Fehlerprotokoll untersuchen.

    In der folgenden Tabelle finden Sie Beschreibungen der Parameter der vorangegangenen Beispiele für docker run:

    Parameter BESCHREIBUNG
    -e „ACCEPT_EULA = Y“ Legen Sie für die Variable ACCEPT_EULA einen beliebigen Wert fest, um Ihre Zustimmung zum End-User Licensing Agreement (Benutzerlizenzvertrag) zu geben. Erforderliche Einstellung für das SQL Edge-Image
    -e "MSSQL_SA_PASSWORD=yourStrong(!)Password" Geben Sie ein sicheres Kennwort ein, das aus mindestens acht Zeichen besteht und den Kennwortanforderungen von Azure SQL Edge entspricht. Erforderliche Einstellung für das SQL Edge-Image
    -p 1433:1433 Ordnen Sie einen TCP-Port in der Hostumgebung (erster Wert) einem TCP-Port im Container zu (zweiter Wert). In diesem Beispiel lauscht SQL Edge an TCP 1433 im Container. Diese Informationen werden Port 1433 auf dem Host verfügbar gemacht.
    --name azuresqledge Geben Sie dem Container selbst einen Namen, anstatt einen willkürlich generierten zu verwenden. Wenn Sie mehrere Container ausführen, können Sie nicht mehrfach denselben Namen verwenden.
    -d Hiermit wird der Container im Hintergrund ausgeführt (Daemon)

    Eine vollständige Liste aller Azure SQL Edge-Umgebungsvariablen finden Sie unter Konfigurieren von Azure SQL Edge mit Umgebungsvariablen. Sie können auch SQL Edge-Container mithilfe der Datei mssql.conf konfigurieren.

  3. Verwenden Sie den Befehl docker ps, um Ihre Docker-Container anzeigen zu lassen.

    sudo docker ps -a
    
  4. Wenn die Spalte STATUS den Status Up (Aktiv) enthält, wird SQL Edge im Container ausgeführt und lauscht an dem Port, der in der Spalte PORTS angegeben ist. Wenn die Spalte STATUS für Ihren SQL Edge-Container Exited (Beendet) enthält, lesen Sie in der Azure SQL Edge-Dokumentation den Abschnitt „Problembehandlung“.

    Der Parameter -h (Hostname) ist ebenfalls nützlich, wird der Einfachheit halber jedoch in diesem Tutorial nicht verwendet. Mit ihm lässt sich der interne Name eines Containers in einen benutzerdefinierten Wert ändern. Dieser Name wird in der folgenden Transact-SQL-Abfrage zurückgegeben:

    SELECT @@SERVERNAME,
        SERVERPROPERTY('ComputerNamePhysicalNetBIOS'),
        SERVERPROPERTY('MachineName'),
        SERVERPROPERTY('ServerName');
    

    Wenn Sie für -h und --name denselben Wert festlegen, kann der Zielcontainer ganz einfach ermittelt werden.

  5. Ändern Sie als letzten Schritt das Systemadministratorkennwort, da das MSSQL_SA_PASSWORD in der ps -eax-Ausgabe sichtbar und in der Umgebungsvariablen mit dem gleichen Namen gespeichert ist. Sehen Sie sich die folgenden Schritte an.

Ändern des Systemadministratorkennworts

Das Konto SA ist ein Systemadministrator in der Azure SQL Edge-Instanz, das beim Setup erstellt wird. Nach dem Erstellen Ihres SQL Edge-Containers können Sie die von Ihnen festgelegte Umgebungsvariable MSSQL_SA_PASSWORD ermitteln, indem Sie echo $MSSQL_SA_PASSWORD im Container ausführen. Ändern Sie aus Sicherheitsgründen ihr SA-Kennwort.

  1. Wählen Sie ein sicheres Kennwort für den SA-Benutzer aus.

  2. Verwenden Sie docker exec in Transact-SQL sqlcmd zum Ausführen und Ändern des Kennworts. Ersetzen Sie im folgenden Beispiel das alte Kennwort, <YourStrong!Passw0rd>, und das neue Kennwort, <YourNewStrong!Passw0rd>, durch Ihre eigenen Kennwortwerte.

    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>"'
    

Herstellen einer Verbindung mit Azure SQL Edge

In den folgenden Schritten wird das Azure SQL Edge-Befehlszeilentool sqlcmd im Container genutzt, um eine Verbindung mit SQL Edge herzustellen.

  1. Verwenden Sie den Befehl docker exec -it, um in Ihrem laufenden Container eine interaktive Bash-Shell zu starten. Im folgenden Beispiel steht azuresqledge für den Namen, den Sie bei der Erstellung des Containers mit dem Parameter --name angegeben haben.

    sudo docker exec -it azuresqledge "bash"
    
  2. Sobald Sie sich im Container befinden, stellen Sie eine lokale Verbindung mit sqlcmd her. Da sqlcmd nicht standardmäßig im Pfad enthalten ist, müssen Sie selbst den vollständigen Pfand angeben.

    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "<YourNewStrong@Passw0rd>"
    

    Tipp

    Sie können das Kennwort in der Befehlszeile auslassen, damit Sie aufgefordert werden, es einzugeben.

  3. Wenn dies erfolgreich war, sollten zu einer sqlcmd Eingabeaufforderung: 1> gelangen.

Erstellen und Abfragen von Daten

Die folgenden Abschnitte führen Sie durch die Verwendung von sqlcmd und Transact-SQL, um eine neue Datenbank zu erstellen, Daten hinzuzufügen und eine Abfrage auszuführen.

Erstellen einer neuen Datenbank

Mit den folgenden Schritten wird eine neue Datenbank mit dem Namen TestDB erstellt.

  1. Fügen Sie aus der sqlcmd-Eingabeaufforderung den folgenden Transact-SQL-Befehl zur Erstellung einer Testdatenbank ein:

    CREATE DATABASE TestDB;
    GO
    
  2. Schreiben Sie in der nächsten Zeile eine Abfrage, um den Namen all Ihrer Datenbanken auf Ihrem Server zurückzugeben:

    SELECT name from sys.databases;
    GO
    

Einfügen von Daten

Erstellen Sie als Nächstes eine neue Tabelle, Inventory, und fügen Sie zwei neue Zeilen ein.

  1. Wechseln Sie den Kontext aus der sqlcmd-Eingabeaufforderung zur neuen TestDB-Datenbank:

    USE TestDB;
    
  2. Erstellen Sie eine neue Tabelle mit dem Namen Inventory:

    CREATE TABLE Inventory (
        id INT,
        name NVARCHAR(50),
        quantity INT
    );
    
  3. Fügen Sie Daten in die neue Tabelle ein:

    INSERT INTO Inventory
    VALUES (1, 'banana', 150);
    
    INSERT INTO Inventory
    VALUES (2, 'orange', 154);
    
  4. Geben Sie GO ein, um die zuvor eingegebenen Befehle auszuführen:

    GO
    

Auswählen von Daten

Führen Sie nun eine Abfrage zum Zurückgeben von Daten aus der Inventory-Tabelle aus.

  1. Geben Sie aus der sqlcmd-Eingabeaufforderung eine Abfrage ein, die Reihen aus der Inventory-Tabelle zurückgibt, bei denen die Menge größer als 152 ist:

    SELECT * FROM Inventory WHERE quantity > 152;
    
  2. Führen Sie den folgenden Befehl aus:

    GO
    

Beenden der sqlcmd-Eingabeaufforderung

  1. Zum Beenden der sqlcmd-Sitzung, geben Sie QUIT ein:

    QUIT
    
  2. Geben Sie exit ein, um die interaktive Befehlszeile in Ihrem Container zu beenden. Der Container wird auch nach dem Beenden der interaktiven Bash-Shell weiter ausgeführt.

Herstellen einer Verbindung von außerhalb des Containers

Sie können auch über jedes externe Linux-, Windows- oder macOS-Tool, das SQL-Verbindungen unterstützt, auf Ihrem Docker-Computer eine Verbindung mit der SQL Edge-Instanz herstellen. Weitere Informationen zum Herstellen einer Verbindung mit einem SQL Edge-Container von außerhalb finden Sie unter Herstellen einer Verbindung mit und Abfragen von Azure SQL Edge (Vorschau).

Entfernen Ihres Containers

Wenn Sie den in diesem Tutorial verwendeten SQL Edge-Container entfernen möchten, führen Sie die folgenden Befehle aus:

sudo docker stop azuresqledge
sudo docker rm azuresqledge

Warnung

Wenn Sie einen Container beenden oder entfernen, werden die SQL Edge-Daten dauerhaft aus diesem Container gelöscht. Wenn Sie Ihre Daten weiterhin benötigen, erstellen Sie eine Sicherungskopie des Containers, oder nutzen Sie für die Containerdaten eine Methode zur Datenpersistenz.

Nächste Schritte