Skapa ett dataströmningsjobb i Azure SQL Edge
Viktigt!
Azure SQL Edge dras tillbaka den 30 september 2025. Mer information och migreringsalternativ finns i meddelandet Om pensionering.
Kommentar
Azure SQL Edge stöder inte längre ARM64-plattformen.
Den här artikeln beskriver hur du skapar ett T-SQL-direktuppspelningsjobb i Azure SQL Edge. Du skapar indata- och utdataobjekt för extern ström och definierar sedan frågan för direktuppspelningsjobbet som en del av skapandet av strömningsjobbet.
Konfigurera indata- och utdataobjekt för extern ström
T-SQL-direktuppspelning använder funktionen för extern datakälla i SQL Server för att definiera de datakällor som är associerade med externa indata och utdata från strömningsjobbet. Använd följande T-SQL-kommandon för att skapa ett externt flödesindata- eller utdataobjekt:
- Skapa externt filformat (Transact-SQL)
- Skapa extern datakälla (Transact-SQL)
- SKAPA EXTERN STRÖM (Transact-SQL)
Om Azure SQL Edge, SQL Server eller Azure SQL Database används som utdataström behöver du dessutom CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL). Det här T-SQL-kommandot definierar autentiseringsuppgifterna för att komma åt databasen.
Datakällor för indata och utdataströmmar som stöds
Azure SQL Edge stöder för närvarande endast följande datakällor som indata och utdata för dataströmmar.
Typ av datakälla | Indata | Utdata | beskrivning |
---|---|---|---|
Azure IoT Edge-hubb | Y | Y | Datakälla för att läsa och skriva strömmande data till en Azure IoT Edge-hubb. Mer information finns i IoT Edge Hub. |
SQL Database | N | Y | Datakällans anslutning för att skriva strömmande data till SQL Database. Databasen kan vara en lokal databas i Azure SQL Edge eller en fjärrdatabas i SQL Server eller Azure SQL Database. |
Kafka | Y | N | Datakälla för att läsa strömmande data från ett Kafka-ämne. |
Exempel: Skapa ett externt indata-/utdataobjekt för Azure IoT Edge-hubben
I följande exempel skapas ett externt dataströmsobjekt för Azure IoT Edge-hubben. Om du vill skapa en extern datakälla för in-/utdataströmmen för Azure IoT Edge-hubben måste du först skapa ett externt filformat för layouten för de data som läses eller skrivs också.
Skapa ett externt filformat av typen JSON.
CREATE EXTERNAL FILE format InputFileFormat WITH (FORMAT_TYPE = JSON); GO
Skapa en extern datakälla för Azure IoT Edge-hubben. Följande T-SQL-skript skapar en datakällaanslutning till en IoT Edge-hubb som körs på samma Docker-värd som Azure SQL Edge.
CREATE EXTERNAL DATA SOURCE EdgeHubInput WITH (LOCATION = 'edgehub://'); GO
Skapa det externa dataströmobjektet för Azure IoT Edge-hubben. Följande T-SQL-skript skapar ett dataströmobjekt för IoT Edge-hubben. Om ett IoT Edge-hubbströmobjekt är LOCATION-parametern namnet på det IoT Edge-hubbämne eller -kanal som läses eller skrivs till.
CREATE EXTERNAL STREAM MyTempSensors WITH ( DATA_SOURCE = EdgeHubInput, FILE_FORMAT = InputFileFormat, LOCATION = N'TemperatureSensors', INPUT_OPTIONS = N'', OUTPUT_OPTIONS = N'' ); GO
Exempel: Skapa ett externt dataströmsobjekt till Azure SQL Database
I följande exempel skapas ett externt dataströmsobjekt till den lokala databasen i Azure SQL Edge.
Skapa en huvudnyckel i databasen. Detta krävs för att kryptera hemligheten för autentiseringsuppgifter.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<<Strong_Password_For_Master_Key_Encryption>>';
Skapa en databasomfattande autentiseringsuppgift för åtkomst till SQL Server-källan. I följande exempel skapas en autentiseringsuppgift för den externa datakällan, med IDENTITY = username och SECRET = password.
CREATE DATABASE SCOPED CREDENTIAL SQLCredential WITH IDENTITY = '<SQL_Login>', SECRET = '<SQL_Login_PASSWORD>'; GO
Skapa en extern datakälla med SKAPA EXTERN DATAKÄLLA. Följande exempel:
- Skapar en extern datakälla med namnet LocalSQLOutput.
- Identifierar den externa datakällan (
LOCATION = '<vendor>://<server>[:<port>]'
). I exemplet pekar den på en lokal instans av Azure SQL Edge. - Använder autentiseringsuppgifterna som skapades tidigare.
CREATE EXTERNAL DATA SOURCE LocalSQLOutput WITH ( LOCATION = 'sqlserver://tcp:.,1433', CREDENTIAL = SQLCredential ); GO
Skapa det externa dataströmsobjektet. I följande exempel skapas ett externt strömobjekt som pekar på en tabell-dbo . TemperatureMeasurements i databasen MySQLDatabase.
CREATE EXTERNAL STREAM TemperatureMeasurements WITH ( DATA_SOURCE = LocalSQLOutput, LOCATION = N'MySQLDatabase.dbo.TemperatureMeasurements', INPUT_OPTIONS = N'', OUTPUT_OPTIONS = N'' );
Exempel: Skapa ett externt strömobjekt för Kafka
I följande exempel skapas ett externt dataströmsobjekt till den lokala databasen i Azure SQL Edge. Det här exemplet förutsätter att kafka-servern har konfigurerats för anonym åtkomst.
Skapa en extern datakälla med SKAPA EXTERN DATAKÄLLA. Följande exempel:
CREATE EXTERNAL DATA SOURCE [KafkaInput] WITH (LOCATION = N'kafka://<kafka_bootstrap_server_name_ip>:<port_number>'); GO
Skapa ett externt filformat för Kafka-indata. I följande exempel skapades ett JSON-filformat med GZipped Compression.
CREATE EXTERNAL FILE FORMAT JsonGzipped WITH ( FORMAT_TYPE = JSON, DATA_COMPRESSION = 'org.apache.hadoop.io.compress.GzipCodec' ); GO
Skapa det externa dataströmsobjektet. I följande exempel skapas ett externt strömobjekt som pekar på Kafka-ämnet
TemperatureMeasurement
.CREATE EXTERNAL STREAM TemperatureMeasurement WITH ( DATA_SOURCE = KafkaInput, FILE_FORMAT = JsonGzipped, LOCATION = 'TemperatureMeasurement', INPUT_OPTIONS = 'PARTITIONS: 10' ); GO
Skapa strömningsjobbet och strömningsfrågorna
Använd den sys.sp_create_streaming_job
system lagrade proceduren för att definiera strömmande frågor och skapa strömningsjobbet. Den sp_create_streaming_job
lagrade proceduren tar följande parametrar:
@job_name
: Namnet på strömningsjobbet. Namn på direktuppspelningsjobb är unika i hela instansen.@statement
: Stream Analytics Query Language-baserade strömningsfrågeuttryck.
I följande exempel skapas ett enkelt direktuppspelningsjobb med en direktuppspelningsfråga. Den här frågan läser indata från IoT Edge-hubben och skriver till dbo.TemperatureMeasurements
i databasen.
EXEC sys.sp_create_streaming_job @name = N'StreamingJob1',
@statement = N'Select * INTO TemperatureMeasurements from MyEdgeHubInput'
I följande exempel skapas ett mer komplext strömningsjobb med flera olika frågor. Dessa frågor omfattar en som använder den inbyggda AnomalyDetection_ChangePoint
funktionen för att identifiera avvikelser i temperaturdata.
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
Starta, stoppa, släppa och övervaka direktuppspelningsjobb
Starta ett direktuppspelningsjobb i Azure SQL Edge genom att köra den sys.sp_start_streaming_job
lagrade proceduren. Den lagrade proceduren kräver att namnet på direktuppspelningsjobbet startas som indata.
EXEC sys.sp_start_streaming_job @name = N'StreamingJob1';
GO
Om du vill stoppa ett direktuppspelningsjobb kör du den sys.sp_stop_streaming_job
lagrade proceduren. Den lagrade proceduren kräver att namnet på direktuppspelningsjobbet stoppas som indata.
EXEC sys.sp_stop_streaming_job @name = N'StreamingJob1';
GO
Om du vill släppa (eller ta bort) ett direktuppspelningsjobb kör du den sys.sp_drop_streaming_job
lagrade proceduren. Den lagrade proceduren kräver att namnet på strömningsjobbet släpps som indata.
EXEC sys.sp_drop_streaming_job @name = N'StreamingJob1';
GO
Kör den sys.sp_get_streaming_job
lagrade proceduren för att hämta aktuell status för ett direktuppspelningsjobb. Den lagrade proceduren kräver att namnet på strömningsjobbet släpps som indata. Det matar ut namnet och den aktuella statusen för strömningsjobbet.
EXEC sys.sp_get_streaming_job @name = N'StreamingJob1'
WITH RESULT SETS (
(
name NVARCHAR(256),
status NVARCHAR(256),
error NVARCHAR(256)
)
);
GO
Strömningsjobbet kan ha någon av följande statusar:
Status | Beskrivning |
---|---|
Skapad | Strömningsjobbet skapades, men har ännu inte startats. |
Startar | Strömningsjobbet är i startfasen. |
Inaktiv | Strömningsjobbet körs, men det finns inga indata att bearbeta. |
Bearbetning | Direktuppspelningsjobbet körs och bearbetar indata. Det här tillståndet anger ett felfritt tillstånd för strömningsjobbet. |
Degraderad | Strömningsjobbet körs, men det uppstod några icke-dödliga fel under bearbetningen av indata. Indatajobbet fortsätter att köras, men släpper indata som påträffar fel. |
Stoppat | Direktuppspelningsjobbet har stoppats. |
Misslyckad | Strömningsjobbet misslyckades. Detta är vanligtvis en indikation på ett allvarligt fel under bearbetningen. |
Kommentar
Eftersom strömningsjobbet körs asynkront kan jobbet stöta på fel vid körning. Om du vill felsöka ett fel i ett direktuppspelningsjobb använder du den sys.sp_get_streaming_job
lagrade proceduren eller granskar Docker-loggen från Azure SQL Edge-containern, som kan ange felinformationen från strömningsjobbet.