Azure SQL Edge のデプロイ

重要

Azure SQL Edge では、ARM64 プラットフォームがサポートされなくなりました。

Azure SQL Edge は、IoT および Azure IoT Edge のデプロイ向けに最適化されたリレーショナル データベース エンジンです。 これは、IoT のアプリケーションおよびソリューションに向けて、パフォーマンスの高いデータ ストレージと処理レイヤーを作成する機能を提供します。 このクイックスタートでは、Azure portal を使用して Azure IoT Edge を介して Azure SQL Edge モジュールの作成を開始する方法を示します。

開始する前に

Note

Azure Linux VM を IoT Edge デバイスとしてデプロイする場合は、こちらのクイックスタート ガイドを参照してください。

Azure Marketplace から SQL Edge モジュールをデプロイする

Azure Marketplace は、アプリケーションとサービスのオンライン マーケットプレースであり、IoT Edge モジュールなど、Azure での実行を認定されてそれに最適化されている、さまざまなエンタープライズ アプリケーションとソリューションを参照できます。 Azure SQL Edge は、マーケットプレースからエッジ デバイスにデプロイできます。

  1. Azure Marketplace で Azure SQL Edge モジュールを検索します。

    Screenshot of SQL Edge in the Azure Marketplace.

  2. 要件に最も合うソフトウェア プランを選び、[作成] を選択します。

    Screenshot showing how to pick the correct software plan.

  3. [IoT Edge モジュールのターゲット デバイス] ページで、次の詳細情報を指定し、[作成] を選択します。

    フィールド 説明
    サブスクリプション IoT Hub が作成された Azure サブスクリプション
    IoT Hub IoT Edge デバイスが登録され、その後 [デバイスへのデプロイ] オプションを選択する IoT Hub の名前
    IoT Edge デバイスの名前 SQL Edge がデプロイされる IoT Edge デバイスの名前
  4. [デバイスのモジュールを設定してください:] ページで、[IoT Edge モジュール] の下にある Azure SQL Edge モジュールを選択します。 既定のモジュール名は AzureSQLEdge に設定されます。

  5. [IoT Edge モジュールの更新] ペインの [モジュールの設定] セクションで、[IoT Edge モジュール名][再起動ポリシー][必要な状態] に必要な値を指定します。

    重要

    モジュールの [イメージの URI] 設定を変更または更新しないでください。

  6. [IoT Edge モジュールの更新] ペインの [環境変数] セクションで、環境変数に必要な値を指定します。 Azure SQL Edge 環境変数の詳細な一覧については、「環境変数を使用して構成する」を参照してください。 次の既定の環境変数がモジュールに対して定義されています。

    パラメーター 説明
    MSSQL_SA_PASSWORD 既定値を変更して、SQL Edge 管理者アカウント用の強力なパスワードを指定します。
    MSSQL_LCID 既定値を変更して、SQL Edge に使用する目的の言語 ID を設定します。 たとえば、1036 はフランス語です。
    MSSQL_COLLATION 既定値を変更して、SQL Edge の既定の照合順序を設定します。 この設定は、照合順序に対する言語 ID (LCID) の既定のマッピングをオーバーライドします。

    重要

    モジュールの ACCEPT_EULA 環境変数を変更または更新しないでください。

  7. [IoT Edge モジュールの更新] ペインの [コンテナーの作成オプション] セクションで、要件に従って次のオプションを更新します。

    • ホスト ポート

      指定したホスト ポートをコンテナーのポート 1433 (既定の SQL ポート) にマップします。

    • バインドマウント

      複数の SQL Edge モジュールをデプロイする必要がある場合は、必ずマウントオプションを更新して、永続的なボリューム用の新しいソースとターゲットのペアを作成してください。 マウントとボリュームについて詳しくは、Docker ドキュメントのボリュームの使用に関するページをご覧ください。

    {
        "HostConfig": {
            "CapAdd": [
                "SYS_PTRACE"
            ],
            "Binds": [
                "sqlvolume:/sqlvolume"
            ],
            "PortBindings": {
                "1433/tcp": [
                    {
                        "HostPort": "1433"
                    }
                ]
            },
            "Mounts": [
                {
                    "Type": "volume",
                    "Source": "sqlvolume",
                    "Target": "/var/opt/mssql"
                }
            ]
        },
        "Env": [
            "MSSQL_AGENT_ENABLED=TRUE",
            "ClientTransportType=AMQP_TCP_Only",
            "PlanId=asde-developer-on-iot-edge"
        ]
    }
    

    重要

    構成の作成の設定で定義されている PlanId 環境変数は、変更しないでください。 この値を変更すると、Azure SQL Edge コンテナーの起動に失敗します。

    警告

    モジュールを再インストールする場合は、まず既存のバインディングを削除してください。そうでないと、環境変数が更新されません。

  8. [IoT Edge モジュールの更新] ペインで、[更新] を選択します。

  9. デプロイのルートを定義する必要がある場合は、[デバイスのモジュールを設定してください] ページで [次へ: ルート >] を選択します。 それ以外の場合は、[確認と作成] を選択します。 ルートの構成の詳細については、モジュールのデプロイと IoT Edge へのルートの確立に関する記事をご覧ください。

  10. [デバイスのモジュールを設定してください] ページで [作成] を選択します。

Azure SQL Edge に接続する

次の手順では Azure SQL Edge に接続するためにコンテナー内で Azure SQL Edge コマンド ライン ツールである sqlcmd を使用します。

Note

SQL Server コマンド ライン ツール (sqlcmd を含む) は、ARM64 バージョンの Azure SQL Edge コンテナー内では使用できません。

  1. 実行中のコンテナー内で対話型の Bash シェルを開始するには、docker exec -it コマンドを使用します。 次の例の AzureSQLEdge は、IoT Edge モジュールの Name パラメーターで指定されている名前です。

    sudo docker exec -it AzureSQLEdge "bash"
    
  2. コンテナー内では sqlcmd とローカル接続してください。 既定では sqlcmd はパスにないため、完全なパスを指定する必要があります。

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

    ヒント

    コマンド ラインでパスワードを省略すると、入力を求められます。

  3. 成功すると、sqlcmd コマンド プロンプト 1> が表示されます。

データの作成とクエリ

後続のセクションでは sqlcmd と Transact-SQL to を使用し、新しいデータベースを作成し、データを追加し、クエリを実行します。

新しいデータベースの作成

次の手順では、TestDB という名前の新しいデータベースを作成します。

  1. sqlcmd のコマンド プロンプトに次の Transact-SQL コマンドを貼り付け、テスト データベースを作成します。

    CREATE DATABASE TestDB;
    GO
    
  2. 次の行に、サーバー上のすべてのデータベースの名前を返すクエリを記述します。

    SELECT name from sys.databases;
    GO
    

データの挿入

次に、Inventory という新しいテーブルを作成し、2 つの新しい行を挿入します。

  1. sqlcmd のコマンド プロンプトで、コンテキストを新しい TestDB データベースに切り替えます。

    USE TestDB;
    
  2. Inventory という名前の新しいテーブルを作成します。

    CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT)
    
  3. 新しいテーブルにデータを挿入します。

    INSERT INTO Inventory
    VALUES (1, 'banana', 150);
    
    INSERT INTO Inventory
    VALUES (2, 'orange', 154);
    
  4. GO」と入力して前のコマンドを実行します。

    GO
    

データの選択

ここで、Inventory テーブルからデータを返すクエリを実行します。

  1. sqlcmd のコマンド プロンプトで、数量が 152 より大きいInventory テーブルから行を返すクエリを入力します。

    SELECT * FROM Inventory WHERE quantity > 152;
    
  2. 次のコマンドを実行します。

    GO
    

sqlcmd コマンド プロンプトの終了

  1. sqlcmd セッションを終了するには、「QUIT」と入力します。

    QUIT
    
  2. コンテナー内で対話型のコマンド プロンプトを終了するには、exit と入力します。 コンテナーは、対話型の Bash シェルを終了した後も引き続き実行されます。

コンテナーの外からの接続

SQL 接続をサポートしている外部の Linux、Windows、または macOS ツールから、Azure SQL Edge インスタンスに対して SQL クエリを接続して実行することができます。 外部から SQL Edge コンテナーへの接続に関する詳細については、「Azure SQL Edge の接続とクエリ」を参照してください。

このクイックスタートでは、SQL Edge モジュールを IoT Edge デバイスにデプロイしました。

次のステップ