设置 IoT Edge 模块和连接

重要

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

注意

Azure SQL Edge 不再支持 ARM64 平台。

本 Azure SQL Edge 铁矿石杂质预测教程由三部分组成,在第二部分中,你将设置以下 IoT Edge 模块:

  • Azure SQL Edge
  • 数据生成器 IoT Edge 模块

指定容器注册表凭据

需要指定托管模块映像的容器注册表的凭据。 可在资源组中创建的容器注册表中找到这些凭据。 导航到“访问密钥”部分。 请记下以下字段:

  • 注册表名称
  • 登录服务器
  • 用户名
  • 密码

现在,在 IoT Edge 模块中指定容器凭据。

  1. 导航到在资源组中创建的 IoT 中心。

  2. 在“自动设备管理”下的“IoT Edge”部分,选择“设备 ID”。 对于本教程,ID 是 IronOrePredictionDevice

  3. 选择“设置模块”部分。

  4. 在“容器注册表凭据”下,输入以下值:

    字段
    名称 注册表名称
    地址 登录服务器
    用户名 用户名
    密码 密码

生成、推送和部署数据生成器模块

  1. 将项目文件克隆到计算机。

  2. 使用 Visual Studio 2019 打开文件 IronOre_Silica_Predict.sln

  3. 在 deployment.template.json 中更新容器注册表详细信息

    "registryCredentials": {
         "RegistryName": {
             "username": "",
             "password": "",
             "address": ""
         }
    }
    
  4. 更新 modules.json 文件以指定目标容器注册表(或模块的存储库)

    "image": {
         "repository":"samplerepo.azurecr.cn/ironoresilicapercent",
         "tag":
    }
    
  5. 在调试或发布模式下执行项目,确保项目运行不会出现任何问题

  6. 右键单击项目名称,然后选择“生成和推送 IoT Edge 模块”,将项目推送到容器注册表。

  7. 将数据生成器模块作为 IoT Edge 模块部署到 Edge 设备。

部署 Azure SQL Edge 模块

  1. 通过依次选择“+ 添加”和“IoT Edge 模块”部署 Azure SQL Edge 模块

  2. 设置“添加 IoT Edge 模块”页中的 配置选项以部署 Azure SQL Edge 模块。 有关配置选项的详细信息,请参阅部署 Azure SQL Edge

  3. MSSQL_PACKAGE 环境变量添加到 Azure SQL Edge 模块部署中,并指定在本教程第一部分的步骤 8 中创建的数据库 dacpac 文件的 SAS URL。

  4. 选择“更新”

  5. 在“在设备上设置模块”页上,选择“下一步: 路由 >”。

  6. 在“在设备上设置模块”页的路由窗格上,按如下所述为模块指定到 IoT Edge 中心通信的路由。 请确保更新下面路由定义中的模块名称。

    FROM /messages/modules/<your_data_generator_module>/outputs/IronOreMeasures
    INTO BrokeredEndpoint("/modules/<your_azure_sql_edge_module>/inputs/IronOreMeasures")
    

    例如:

    FROM /messages/modules/ASEDataGenerator/outputs/IronOreMeasures
    INTO BrokeredEndpoint("/modules/AzureSQLEdge/inputs/IronOreMeasures")
    
  7. 在“在设备上设置模块”页上,选择“下一步: 查看 + 创建 >”

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

在 Azure SQL Edge 中创建并启动 T-SQL 流式处理作业。

  1. 打开 Azure Data Studio。

  2. 在“欢迎使用”选项卡中,使用以下详细信息启动一个新连接:

    字段
    连接类型 Microsoft SQL Server
    服务器 为此演示创建的 VM 中提及的公共 IP 地址
    用户名 sa
    密码 创建 Azure SQL Edge 实例时使用的强密码
    数据库 默认
    服务器组 默认
    名称(可选) 提供可选名称
  3. 选择“连接”。

  4. 在“文件”菜单选项卡中,打开一个新笔记本或使用键盘快捷方式 Ctrl + N。

  5. 在新的查询窗口中,执行以下脚本以创建 T-SQL 流式处理作业。 在执行脚本之前,请确保更改以下变量:

    • @SQL_SA_Password:部署 Azure SQL Edge 模块时指定的 MSSQL_SA_PASSWORD 值。
    USE IronOreSilicaPrediction;
    GO
    
    DECLARE @SQL_SA_Password VARCHAR(200) = '<SQL_SA_Password>';
    DECLARE @query VARCHAR(MAX);
    
    /* Create objects required for streaming */
    
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'MyStr0ng3stP@ssw0rd';
    
    IF NOT EXISTS (
            SELECT name
            FROM sys.external_file_formats
            WHERE name = 'JSONFormat'
            )
    BEGIN
        CREATE EXTERNAL FILE FORMAT [JSONFormat]
            WITH (FORMAT_TYPE = JSON)
    END
    
    IF NOT EXISTS (
            SELECT name
            FROM sys.external_data_sources
            WHERE name = 'EdgeHub'
            )
    BEGIN
        CREATE EXTERNAL DATA SOURCE [EdgeHub]
            WITH (LOCATION = N'edgehub://')
    END
    
    IF NOT EXISTS (
            SELECT name
            FROM sys.external_streams
            WHERE name = 'IronOreInput'
            )
    BEGIN
        CREATE EXTERNAL STREAM IronOreInput
            WITH (
                    DATA_SOURCE = EdgeHub,
                    FILE_FORMAT = JSONFormat,
                    LOCATION = N'IronOreMeasures'
                    )
    END
    
    IF NOT EXISTS (
            SELECT name
            FROM sys.database_scoped_credentials
            WHERE name = 'SQLCredential'
            )
    BEGIN
        SET @query = 'CREATE DATABASE SCOPED CREDENTIAL SQLCredential
                     WITH IDENTITY = ''sa'', SECRET = ''' + @SQL_SA_Password + ''''
    
        EXECUTE (@query)
    END
    
    IF NOT EXISTS (
            SELECT name
            FROM sys.external_data_sources
            WHERE name = 'LocalSQLOutput'
            )
    BEGIN
        CREATE EXTERNAL DATA SOURCE LocalSQLOutput
            WITH (
                    LOCATION = 'sqlserver://tcp:.,1433',
                    CREDENTIAL = SQLCredential
                    )
    END
    
    IF NOT EXISTS (
            SELECT name
            FROM sys.external_streams
            WHERE name = 'IronOreOutput'
            )
    BEGIN
        CREATE EXTERNAL STREAM IronOreOutput
            WITH (
                    DATA_SOURCE = LocalSQLOutput,
                    LOCATION = N'IronOreSilicaPrediction.dbo.IronOreMeasurements'
                    )
    END
    
    EXEC sys.sp_create_streaming_job @name = N'IronOreData',
        @statement = N'Select * INTO IronOreOutput from IronOreInput';
    
    EXEC sys.sp_start_streaming_job @name = N'IronOreData';
    
  6. 使用以下查询验证数据生成器模块中的数据是否正在流式传输到数据库中。

    SELECT TOP 10 *
    FROM dbo.IronOreMeasurements
    ORDER BY timestamp DESC;
    

在本教程中,我们部署了数据生成器模块和 SQL Edge 模块。 然后,我们创建了一个流式处理作业,将数据生成器模块生成的数据流式传输到 SQL。