部署 Azure SQL Edge

重要

Azure SQL Edge 将于 2025 年 9 月 30 日停用。 有关详细信息和迁移选项,请参阅停用通知

注意

Azure SQL Edge 不再支持 ARM64 平台。

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

开始之前

注意

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

使用 IoT 中心部署 Azure SQL Edge 模块

可以根据从 Azure 门户部署模块中的说明来部署 Azure SQL Edge。 Azure SQL Edge 的映像 URI 为 mcr.microsoft.com/azure-sql-edge:latest

  1. 在“添加 IoT Edge 模块”页上,为“IoT Edge 模块名称”、“映像 URI”、“重启策略”和“所需状态”指定所需值

    根据要部署的版本使用以下映像 URI:

    • 开发人员版本 - mcr.microsoft.com/azure-sql-edge/developer
    • 高级版本 - mcr.microsoft.com/azure-sql-edge/premium
  2. 在“添加 IoT Edge 模块”页上的“环境变量”部分中,为环境变量指定所需值。 有关 Azure SQL Edge 环境变量的完整列表,请参阅使用环境变量进行配置

    参数 说明
    ACCEPT_EULA 将此值设置为 Y 以接受最终用户许可协议
    MSSQL_SA_PASSWORD 设置此值,以便为 SQL Edge 管理员帐户指定强密码。
    MSSQL_LCID 设置此值,以设置要用于 SQL Edge 的所需语言 ID。 例如,1036 为法语。
    MSSQL_COLLATION 设置此值,以设置 SQL Edge 的默认排序规则。 此设置替代语言 ID (LCID) 到排序规则的默认映射。
  3. 在“添加 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 环境变量。

    • 开发人员版本 - asde-developer-on-iot-edge
    • 高级版本 - asde-premium-on-iot-edge

    如果未正确设置此值,则 Azure SQL Edge 容器无法启动。

    警告

    如果重新安装模块,请记住先删除任何现有绑定,否则不会更新环境变量。

  4. 在“添加 IoT Edge 模块”页上,选择“添加”

  5. 如果需要为部署定义路由,请在“在设备上设置模块”页上选择“下一步: 路由 >”。 否则请选择“查看 + 创建”。 有关配置路由的详细信息,请参阅在 IoT Edge 中部署模块和建立路由

  6. 在“在设备上设置模块”页上,选择“创建”。

连接到 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 模块。