Adatstreamelési feladat létrehozása az Azure SQL Edge-ben
Fontos
Az Azure SQL Edge 2025. szeptember 30-án megszűnik. További információkért és a migrálási lehetőségekért tekintse meg a kivonásról szóló közleményt.
Feljegyzés
Az Azure SQL Edge már nem támogatja az ARM64 platformot.
Ez a cikk bemutatja, hogyan hozhat létre T-SQL streamelési feladatot az Azure SQL Edge-ben. Hozza létre a külső streambemeneti és kimeneti objektumokat, majd a streamelési feladat lekérdezését a streamelési feladat létrehozása részeként definiálja.
A külső streambemeneti és kimeneti objektumok konfigurálása
A T-SQL-streamelés az SQL Server külső adatforrás-funkcióival határozza meg a streamelési feladat külső adatfolyam-bemeneteivel és kimeneteivel társított adatforrásokat. Külső streambemeneti vagy kimeneti objektum létrehozásához használja a következő T-SQL-parancsokat:
- CREATE EXTERNAL FILE FORMAT (Transact-SQL)
- CREATE EXTERNAL DATA SOURCE (Transact-SQL)
- KÜLSŐ STREAM LÉTREHOZÁSA (Transact-SQL)
Ezenkívül ha az Azure SQL Edge, az SQL Server vagy az Azure SQL Database kimeneti streamként van használva, szüksége lesz a CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL) azonosítóra. Ez a T-SQL-parancs határozza meg az adatbázis eléréséhez szükséges hitelesítő adatokat.
Támogatott bemeneti és kimeneti stream adatforrások
Az Azure SQL Edge jelenleg csak a következő adatforrásokat támogatja streambemenetként és kimenetként.
Adatforrás típusa | Bevitel | Hozam | Leírás |
---|---|---|---|
Azure IoT Edge Hub | I | I | Adatforrás streamelési adatok olvasásához és írásához egy Azure IoT Edge-központba. További információ: IoT Edge Hub. |
SQL Database | N | I | Adatforrás-kapcsolat streamelési adatok SQL Database-be való írásához. Az adatbázis lehet egy helyi adatbázis az Azure SQL Edge-ben, vagy egy távoli adatbázis az SQL Serveren vagy az Azure SQL Database-ben. |
Kafka | I | N | Adatforrás a streamelési adatok Kafka-témakörből való olvasásához. |
Példa: Külső streambemeneti/kimeneti objektum létrehozása az Azure IoT Edge Hubhoz
Az alábbi példa egy külső streamobjektumot hoz létre az Azure IoT Edge Hubhoz. Az Azure IoT Edge-központ külső streambemeneti/kimeneti adatforrásának létrehozásához először létre kell hoznia egy külső fájlformátumot az olvasandó vagy írott adatok elrendezéséhez is.
Hozzon létre egy JSON típusú külső fájlformátumot.
CREATE EXTERNAL FILE format InputFileFormat WITH (FORMAT_TYPE = JSON); GO
Hozzon létre egy külső adatforrást az Azure IoT Edge Hubhoz. A következő T-SQL-szkript adatforrás-kapcsolatot hoz létre egy olyan IoT Edge-központtal, amely ugyanazon a Docker-gazdagépen fut, mint az Azure SQL Edge.
CREATE EXTERNAL DATA SOURCE EdgeHubInput WITH (LOCATION = 'edgehub://'); GO
Hozza létre a külső streamobjektumot az Azure IoT Edge Hubhoz. A következő T-SQL-szkript létrehoz egy streamobjektumot az IoT Edge-központhoz. IoT Edge hub streamobjektum esetén a LOCATION paraméter annak az IoT Edge hub-témakörnek vagy csatornának a neve, amelybe olvasás vagy írás történik.
CREATE EXTERNAL STREAM MyTempSensors WITH ( DATA_SOURCE = EdgeHubInput, FILE_FORMAT = InputFileFormat, LOCATION = N'TemperatureSensors', INPUT_OPTIONS = N'', OUTPUT_OPTIONS = N'' ); GO
Példa: Külső streamobjektum létrehozása az Azure SQL Database-be
Az alábbi példa egy külső streamobjektumot hoz létre a helyi adatbázishoz az Azure SQL Edge-ben.
Hozzon létre egy főkulcsot az adatbázisban. Ez a hitelesítő adatok titkos kulcsának titkosításához szükséges.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<<Strong_Password_For_Master_Key_Encryption>>';
Hozzon létre egy adatbázis-hatókörű hitelesítő adatot az SQL Server-forrás eléréséhez. Az alábbi példa létrehoz egy hitelesítő adatot a külső adatforráshoz identitás = felhasználónév és SECRET = jelszó használatával.
CREATE DATABASE SCOPED CREDENTIAL SQLCredential WITH IDENTITY = '<SQL_Login>', SECRET = '<SQL_Login_PASSWORD>'; GO
Hozzon létre egy külső adatforrást a CREATE EXTERNAL DATA SOURCE használatával. A következő példa:
- Létrehoz egy LocalSQLOutput nevű külső adatforrást.
- Azonosítja a külső adatforrást (
LOCATION = '<vendor>://<server>[:<port>]'
). A példában az Azure SQL Edge egy helyi példányára mutat. - A korábban létrehozott hitelesítő adatokat használja.
CREATE EXTERNAL DATA SOURCE LocalSQLOutput WITH ( LOCATION = 'sqlserver://tcp:.,1433', CREDENTIAL = SQLCredential ); GO
Hozza létre a külső streamobjektumot. Az alábbi példa egy tábla dbo-ra mutató külső streamobjektumot hoz létre. TemperatureMeasurements, a MySQLDatabase adatbázisban.
CREATE EXTERNAL STREAM TemperatureMeasurements WITH ( DATA_SOURCE = LocalSQLOutput, LOCATION = N'MySQLDatabase.dbo.TemperatureMeasurements', INPUT_OPTIONS = N'', OUTPUT_OPTIONS = N'' );
Példa: Külső streamobjektum létrehozása a Kafkához
Az alábbi példa egy külső streamobjektumot hoz létre a helyi adatbázishoz az Azure SQL Edge-ben. Ez a példa feltételezi, hogy a kafka-kiszolgáló névtelen hozzáférésre van konfigurálva.
Hozzon létre egy külső adatforrást a CREATE EXTERNAL DATA SOURCE használatával. A következő példa:
CREATE EXTERNAL DATA SOURCE [KafkaInput] WITH (LOCATION = N'kafka://<kafka_bootstrap_server_name_ip>:<port_number>'); GO
Hozzon létre egy külső fájlformátumot a Kafka-bemenethez. Az alábbi példa JSON-fájlformátumot hozott létre GZipped Compression használatával.
CREATE EXTERNAL FILE FORMAT JsonGzipped WITH ( FORMAT_TYPE = JSON, DATA_COMPRESSION = 'org.apache.hadoop.io.compress.GzipCodec' ); GO
Hozza létre a külső streamobjektumot. Az alábbi példa létrehoz egy külső streamobjektumot, amely a Kafka-témakörre
TemperatureMeasurement
mutat.CREATE EXTERNAL STREAM TemperatureMeasurement WITH ( DATA_SOURCE = KafkaInput, FILE_FORMAT = JsonGzipped, LOCATION = 'TemperatureMeasurement', INPUT_OPTIONS = 'PARTITIONS: 10' ); GO
A streamelési feladat és a streamelési lekérdezések létrehozása
sys.sp_create_streaming_job
A rendszer által tárolt eljárással definiálhatja a streamelési lekérdezéseket, és létrehozhatja a streamelési feladatot. A sp_create_streaming_job
tárolt eljárás a következő paramétereket veszi igénybe:
@job_name
: A streamelési feladat neve. A streamelési feladatnevek a példányon belül egyediek.@statement
: Stream Analytics Query Language-alapú streamlekérdezési utasítások.
Az alábbi példa egy egyszerű streamelési feladatot hoz létre egy streamelési lekérdezéssel. Ez a lekérdezés beolvassa az IoT Edge-központ bemeneteit, és beírja az adatbázisba dbo.TemperatureMeasurements
.
EXEC sys.sp_create_streaming_job @name = N'StreamingJob1',
@statement = N'Select * INTO TemperatureMeasurements from MyEdgeHubInput'
Az alábbi példa egy összetettebb streamelési feladatot hoz létre több különböző lekérdezéssel. Ezek a lekérdezések olyan lekérdezéseket tartalmaznak, amelyek a beépített AnomalyDetection_ChangePoint
függvényt használják a hőmérsékleti adatok rendellenességeinek azonosítására.
EXEC sys.sp_create_streaming_job @name = N'StreamingJob2',
@statement = N'
SELECT *
INTO TemperatureMeasurements1
FROM MyEdgeHubInput1
SELECT *
INTO TemperatureMeasurements2
FROM MyEdgeHubInput2
SELECT *
INTO TemperatureMeasurements3
FROM MyEdgeHubInput3
SELECT timestamp AS [Time],
[Temperature] AS [Temperature],
GetRecordPropertyValue(AnomalyDetection_ChangePoint(Temperature, 80, 1200) OVER (LIMIT DURATION(minute, 20)), '' Score '') AS ChangePointScore,
GetRecordPropertyValue(AnomalyDetection_ChangePoint(Temperature, 80, 1200) OVER (LIMIT DURATION(minute, 20)), '' IsAnomaly '') AS IsChangePointAnomaly
INTO TemperatureAnomalies
FROM MyEdgeHubInput2;
';
GO
Streamelési feladatok indítása, leállítása, elvetése és figyelése
Ha streamelési feladatot szeretne elindítani az Azure SQL Edge-ben, futtassa a sys.sp_start_streaming_job
tárolt eljárást. A tárolt eljáráshoz bemenetként el kell indulnia a streamelési feladat nevének.
EXEC sys.sp_start_streaming_job @name = N'StreamingJob1';
GO
A streamelési feladat leállításához futtassa a sys.sp_stop_streaming_job
tárolt eljárást. A tárolt eljárásnak le kell állítania a streamelési feladat nevét bemenetként.
EXEC sys.sp_stop_streaming_job @name = N'StreamingJob1';
GO
Streamelési feladat elvetéséhez (vagy törléséhez) futtassa a sys.sp_drop_streaming_job
tárolt eljárást. A tárolt eljáráshoz a streamelési feladat neve le kell esnie bemenetként.
EXEC sys.sp_drop_streaming_job @name = N'StreamingJob1';
GO
A streamelési feladatok aktuális állapotának lekéréséhez futtassa a sys.sp_get_streaming_job
tárolt eljárást. A tárolt eljáráshoz a streamelési feladat neve le kell esnie bemenetként. A streamelési feladat nevét és aktuális állapotát adja ki.
EXEC sys.sp_get_streaming_job @name = N'StreamingJob1'
WITH RESULT SETS (
(
name NVARCHAR(256),
status NVARCHAR(256),
error NVARCHAR(256)
)
);
GO
A streamelési feladat a következő állapotok bármelyikével rendelkezhet:
Állapot | Leírás |
---|---|
Létrehozva | A streamelési feladat létrejött, de még nem indult el. |
Indítás | A streamelési feladat a kezdeti fázisban van. |
Tétlen | A streamelési feladat fut, de nincs feldolgozandó bemenet. |
Feldolgozás | A streamelési feladat fut, és bemeneteket dolgoz fel. Ez az állapot a streamelési feladat kifogástalan állapotát jelzi. |
Csökkentett teljesítményű | A streamelési feladat fut, de a bemeneti feldolgozás során nem végzetes hibák történtek. A bemeneti feladat továbbra is fut, de a hibákat okozó bemeneteket elveti. |
Leállítva | A streamelési feladat leállt. |
Sikertelen | A streamelési feladat nem sikerült. Ez általában egy végzetes hibára utal a feldolgozás során. |
Feljegyzés
Mivel a streamelési feladat aszinkron módon van végrehajtva, a feladat futásidőben hibákba ütközhet. A streamelési feladat hibáinak elhárításához használja a sys.sp_get_streaming_job
tárolt eljárást, vagy tekintse át a Docker-naplót az Azure SQL Edge-tárolóból, amely a streamelési feladat hibaadatait is megadhatja.