設定 IoT Edge 模組和連線
重要
Azure SQL Edge 不再支援 ARM64 平台。
在此教學課程三部曲的第二部分中,若要在 Azure SQL Edge 中預測鐵礦中的雜質含量,請設定下列 IoT Edge 模組:
- Azure SQL Edge
- 資料產生器 IoT Edge 模組
指定容器登錄認證
您可以對裝載模組映像的容器登錄指定認證。 您可在資源群組中建立的容器登錄找到這些認證。 瀏覽至存取金鑰區段。 記下下列欄位:
- 登錄名稱
- 登入伺服器
- 使用者名稱
- 密碼
現在,請在 IoT Edge 模組中指定容器認證。
瀏覽至您在資源群組中建立的 IoT 中樞。
在 [自動裝置管理] 下的 [IoT Edge] 區段中,選取 [裝置識別碼]。 在本教學課程中,識別碼為
IronOrePredictionDevice
。選取 [設定模組] 區段。
在 [容器登錄認證] 下,輸入下列值:
欄位 值 名稱 登錄名稱 位址 登入伺服器 使用者名稱 使用者名稱 密碼 密碼
建置、推送及部署資料產生器模組
將專案檔複製到您的機器。
使用 Visual Studio 2019 開啟 IronOre_Silica_Predict.sln
更新 deployment.template.json 中的容器登錄詳細資料
"registryCredentials": { "RegistryName": { "username": "", "password": "", "address": "" } }
更新 modules.json 檔案以指定目標容器登錄 (或模組的存放庫)
"image": { "repository":"samplerepo.azurecr.io/ironoresilicapercent", "tag": }
在偵錯或發行模式中執行專案,以確保專案執行時不會發生任何問題
以滑鼠右鍵按一下專案名稱然後選取 [建置和推送 IoT Edge 模組],將專案推送至您的容器登錄。
將資料產生器模組作為 IoT Edge 模組部署到您的 Edge 裝置。
部署 Azure SQL Edge 模組
依序選取 [+ 新增] 和 [IoT Edge 模組],以部署 Azure SQL Edge 模組。
在 [新增 IoT Edge 模組] 頁面中設定設定選項,以部署 Azure SQL Edge 模組。 如需設定選項的詳細資訊,請參閱部署 Azure SQL Edge。
將
MSSQL_PACKAGE
環境變數新增至 Azure SQL Edge 模組部署,並指定資料庫 dacpac 檔案的 SAS URL (您在本教學課程第一部份的步驟 8 中建立了這個檔案)。選取 [更新]
在 [在裝置上設定模組] 頁面上,選取 [下一步: 路由]>。
在 [在裝置上設定模組] 頁面上的 [路由] 窗格中,指定要供模組與 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")
在 [在裝置上設定模組] 頁面上,選取 [下一步: 檢閱並建立]>
在 [在裝置上設定模組] 頁面上,選取 [建立]
在 Azure SQL Edge 中建立並啟動 T-SQL 串流作業。
開啟 Azure Data Studio。
在歡迎使用索引標籤中,使用下列詳細資料開始新的連線:
欄位 值 連線類型 Microsoft SQL Server 伺服器 在此示範中建立的 VM 中提到的公用 IP 位址 使用者名稱 sa 密碼 建立 Azure SQL Edge 執行個體時所使用的強式密碼 Database 預設 伺服器群組 預設 名稱 (選擇性) 提供選用的名稱 選取 Connect。
在 [檔案] 功能表索引標籤中開啟新的筆記本,或使用鍵盤快速鍵 Ctrl + N。
在新的 [查詢] 視窗中,執行下列指令碼來建立 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';
使用下列查詢來確認資料產生模組中的資料正在串流到資料庫。
SELECT TOP 10 * FROM dbo.IronOreMeasurements ORDER BY timestamp DESC;
在本教學課程中,我們已部署資料產生器模組和 SQL Edge 模組。 然後,我們建立了串流作業,以將資料產生模組所產生的資料串流至 SQL。