Megosztás a következőn keresztül:


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:

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.

  1. Hozzon létre egy JSON típusú külső fájlformátumot.

    CREATE EXTERNAL FILE format InputFileFormat
    WITH (FORMAT_TYPE = JSON);
    GO
    
  2. 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
    
  3. 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.

  1. 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>>';
    
  2. 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
    
  3. 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
    
  4. 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.

  1. 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
    
  2. 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
    
  3. Hozza létre a külső streamobjektumot. Az alábbi példa létrehoz egy külső streamobjektumot, amely a Kafka-témakörre TemperatureMeasurementmutat.

    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:

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.