部署 Azure SQL Edge

重要

Azure SQL Edge 不再支持 ARM64 平台。

Azure SQL Edge 是已优化的关系数据库引擎,更适合 IoT 和 Azure IoT Edge 部署。 它提供了为 IoT 应用和解决方案创建高性能数据存储和处理层的功能。 本快速入门介绍了如何开始在 Azure 门户中使用 Azure IoT Edge 创建 Azure SQL Edge 模块。

开始之前

注意

若要将 Azure Linux VM 部署为 IoT Edge 设备,请参阅这篇快速入门指南

从 Azure 市场部署 SQL Edge 模块

Azure 市场是一个应用程序和服务在线市场,可在其中浏览各种企业应用程序和解决方案,这些应用程序和解决方案针对在 Azure 上运行进行了认证和优化,包括 IoT Edge 模块。 Azure SQL Edge 可以通过市场部署到边缘设备。

  1. 在 Azure 市场中找到 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 中心的 Azure 订阅
    IoT 中心 输入在其中注册了 IoT Edge 设备的 IoT 中心的名称,然后选择“部署到设备”选项
    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 命令行工具 sqlcmd 来连接 Azure 中国 SQL Edge。

注意

SQL Sever 命令行工具(包括 sqlcmd)在 Azure SQL Edge 容器的 ARM64 版本中不可用。

  1. 使用 docker exec -it 命令在运行的容器内部启动交互式 Bash Shell。 在下面的示例中,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 完成新建数据库、添加数据并运行查询的整个过程。

新建数据库

以下步骤创建一个名为 TestDB 的新数据库。

  1. 在 sqlcmd 命令提示符中,粘贴以下 Transact-SQL 命令以创建测试数据库:

    CREATE DATABASE TestDB;
    GO
    
  2. 在下一行中,编写一个查询以返回服务器上所有数据库的名称:

    SELECT name from sys.databases;
    GO
    

插入数据

接下来创建一个名为 Inventory 的新表,然后插入两个新行。

  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 命令提示符输入查询,以返回 Inventory 表中数量大于 152 的行:

    SELECT * FROM Inventory WHERE quantity > 152;
    
  2. 执行此命令:

    GO
    

退出 sqlcmd 命令提示符

  1. 要结束 sqlcmd 会话,请键入 QUIT

    QUIT
    
  2. 要在容器中退出交互式命令提示,请键入 exit。 退出交互式 Bash Shell 后,容器将继续运行。

从容器外连接

可以从支持 SQL 连接的任何外部 Linux、Windows 或 macOS 工具连接 Azure SQL Edge 实例,并对其运行 SQL 查询。 有关从外部连接到 SQL Edge 容器的详细信息,请参阅连接和查询 Azure SQL Edge

在本快速入门中,你在 IoT Edge 设备上部署了 SQL Edge 模块。

后续步骤