Azure SQL Edge のデプロイ
Azure SQL Edge は、IoT および Azure IoT Edge のデプロイ向けに最適化されたリレーショナル データベース エンジンです。 これは、IoT のアプリケーションおよびソリューションに向けて、パフォーマンスの高いデータ ストレージと処理レイヤーを作成する機能を提供します。 このクイックスタートでは、Azure portal を使用して Azure IoT Edge を介して Azure SQL Edge モジュールの作成を開始する方法を示します。
開始する前に
- Azure サブスクリプションをお持ちでない場合は、無料アカウントを作成してください。
- Azure portal にサインインします。
- Azure IoT ハブを作成します。
- Azure IoT Edge デバイスを作成します。
Note
Azure Linux VM を IoT Edge デバイスとしてデプロイする場合は、こちらのクイックスタート ガイドを参照してください。
Azure Marketplace から SQL Edge モジュールをデプロイする
Azure Marketplace は、アプリケーションとサービスのオンライン マーケットプレースであり、IoT Edge モジュールなど、Azure での実行を認定されてそれに最適化されている、さまざまなエンタープライズ アプリケーションとソリューションを参照できます。 Azure SQL Edge は、マーケットプレースからエッジ デバイスにデプロイできます。
Azure Marketplace で Azure SQL Edge モジュールを検索します。
要件に最も合うソフトウェア プランを選び、[作成] を選択します。
[IoT Edge モジュールのターゲット デバイス] ページで、次の詳細情報を指定し、[作成] を選択します。
フィールド 説明 サブスクリプション IoT Hub が作成された Azure サブスクリプション IoT Hub IoT Edge デバイスが登録され、その後 [デバイスへのデプロイ] オプションを選択する IoT Hub の名前 IoT Edge デバイス名 SQL Edge がデプロイされる IoT Edge デバイスの名前 [デバイスのモジュールを設定してください:] ページで、[IoT Edge モジュール] の下にある Azure SQL Edge モジュールを選択します。 既定のモジュール名は AzureSQLEdge に設定されます。
[IoT Edge モジュールの更新] ペインの [モジュールの設定] セクションで、[IoT Edge モジュール名]、[再起動ポリシー]、[必要な状態] に必要な値を指定します。
重要
モジュールの [イメージの URI] 設定を変更または更新しないでください。
[IoT Edge モジュールの更新] ペインの [環境変数] セクションで、環境変数に必要な値を指定します。 Azure SQL Edge 環境変数の詳細な一覧については、「環境変数を使用して構成する」を参照してください。 次の既定の環境変数がモジュールに対して定義されています。
パラメーター 説明 MSSQL_SA_PASSWORD 既定値を変更して、SQL Edge 管理者アカウント用の強力なパスワードを指定します。 MSSQL_LCID 既定値を変更して、SQL Edge に使用する目的の言語 ID を設定します。 たとえば、1036 はフランス語です。 MSSQL_COLLATION 既定値を変更して、SQL Edge の既定の照合順序を設定します。 この設定は、照合順序に対する言語 ID (LCID) の既定のマッピングをオーバーライドします。 重要
モジュールの
ACCEPT_EULA
環境変数を変更または更新しないでください。[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 コンテナーの起動に失敗します。警告
モジュールを再インストールする場合は、まず既存のバインディングを削除してください。そうでないと、環境変数が更新されません。
[IoT Edge モジュールの更新] ペインで、[更新] を選択します。
デプロイのルートを定義する必要がある場合は、[デバイスのモジュールを設定してください] ページで [次へ: ルート >] を選択します。 それ以外の場合は、[確認と作成] を選択します。 ルートの構成の詳細については、モジュールのデプロイと IoT Edge へのルートの確立に関する記事をご覧ください。
[デバイスのモジュールを設定してください] ページで [作成] を選択します。
Azure SQL Edge に接続する
次の手順では Azure SQL Edge に接続するためにコンテナー内で Azure SQL Edge コマンド ライン ツールである sqlcmd を使用します。
Note
SQL Server コマンド ライン ツール (sqlcmd を含む) は、ARM64 バージョンの Azure SQL Edge コンテナー内では使用できません。
実行中のコンテナー内で対話型の Bash シェルを開始するには、
docker exec -it
コマンドを使用します。 次の例では、AzureSQLEdge
は IoT Edge モジュールの パラメーターでName
指定された名前です。sudo docker exec -it AzureSQLEdge "bash"
コンテナー内では sqlcmd とローカル接続してください。 既定では sqlcmd はパスにないため、完全なパスを指定する必要があります。
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "<YourNewStrong@Passw0rd>"
ヒント
コマンド ラインでパスワードを省略すると、入力を求められます。
成功すると、sqlcmd コマンド プロンプト
1>
が表示されます。
データの作成とクエリ
後続のセクションでは sqlcmd と Transact-SQL to を使用し、新しいデータベースを作成し、データを追加し、クエリを実行します。
新しいデータベースの作成
次の手順では、TestDB
という名前の新しいデータベースを作成します。
sqlcmd のコマンド プロンプトに次の Transact-SQL コマンドを貼り付け、テスト データベースを作成します。
CREATE DATABASE TestDB; Go
次の行に、サーバー上のすべてのデータベースの名前を返すクエリを記述します。
SELECT Name from sys.databases; Go
データの挿入
次に、Inventory
という新しいテーブルを作成し、2 つの新しい行を挿入します。
sqlcmd のコマンド プロンプトで、コンテキストを新しい
TestDB
データベースに切り替えます。USE TestDB;
Inventory
という名前の新しいテーブルを作成します。CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT)
新しいテーブルにデータを挿入します。
INSERT INTO Inventory VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154);
「
GO
」と入力して前のコマンドを実行します。GO
データの選択
ここで、Inventory
テーブルからデータを返すクエリを実行します。
sqlcmd のコマンド プロンプトで、数量が 152 より大きい
Inventory
テーブルから行を返すクエリを入力します。SELECT * FROM Inventory WHERE quantity > 152;
次のコマンドを実行します。
GO
sqlcmd コマンド プロンプトの終了
sqlcmd セッションを終了するには、「
QUIT
」と入力します。QUIT
コンテナー内で対話型のコマンド プロンプトを終了するには、
exit
と入力します。 コンテナーは、対話型の Bash シェルを終了した後も引き続き実行されます。
コンテナーの外からの接続
SQL 接続をサポートしている外部の Linux、Windows、または macOS ツールから、Azure SQL Edge インスタンスに対して SQL クエリを接続して実行することができます。 外部から SQL Edge コンテナーに接続する方法の詳細については、Azure SQL Edge の接続とクエリに関する記事を参照してください。
このクイックスタートでは、SQL Edge モジュールを IoT Edge デバイスにデプロイしました。