Erstellen eines Datenstreamingauftrags in Azure SQL Edge
Wichtig
Azure SQL Edge wird am 30. September 2025 eingestellt. Weitere Informationen und Migrationsoptionen finden Sie im Einstellungshinweis.
Hinweis
Azure SQL Edge unterstützt die ARM64-Plattform nicht mehr.
In diesem Artikel wird das Erstellen eines T-SQL-Streamingauftrags in Azure SQL Edge beschrieben. Sie erstellen die externen Streameingabe- und -Ausgabeobjekte und definieren dann die Abfrage des Streamingauftrags im Rahmen der Erstellung des Streamingauftrags.
Konfigurieren der externen Streameingabe- und -ausgabeobjekte
T-SQL-Streaming verwendet die Funktionen der externen Datenquelle von SQL Server, um die Datenquellen zu definieren, die den externen Streameingaben und -ausgaben des Streamingauftrags zugeordnet sind. Verwenden Sie die folgenden T-SQL-Befehle, um ein externes Streameingabe- oder -ausgabeobjekt zu erstellen:
- CREATE EXTERNAL FILE FORMAT (Transact-SQL)
- CREATE EXTERNAL DATA SOURCE (Transact-SQL)
- CREATE EXTERNAL STREAM (Transact-SQL)
Wenn Azure SQL Edge, SQL Server oder Azure SQL-Datenbank als Ausgabestream verwendet wird, benötigen Sie außerdem den Befehl CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL). Dieser T-SQL-Befehl definiert die Anmeldeinformationen für den Zugriff auf die Datenbank.
Unterstützte Datenquellen für Eingabe- und Ausgabestreams
Azure SQL Edge unterstützt derzeit nur die folgenden Datenquellen als Streameingaben und -ausgaben.
Datenquellentyp | Eingabe | Ausgabe | Beschreibung |
---|---|---|---|
Azure IoT Edge Hub | Y | Y | Datenquelle zum Lesen und Schreiben von Streamingdaten in einen Azure IoT Edge Hub. Weitere Informationen finden Sie unter IoT Edge Hub. |
SQL-Datenbank | N | J | Datenquellenverbindung, um Streamingdaten in SQL-Datenbank zu schreiben. Die Datenbank kann eine lokale Datenbank in Azure SQL Edge oder eine Remotedatenbank in SQL Server oder Azure SQL-Datenbank sein. |
Kafka | Y | N | Datenquelle zum Lesen von Streamingdaten aus einem Kafka-Thema. |
Beispiel: Erstellen eines Objekts für die externe Streameingabe/-ausgabe für Azure IoT Edge-Hub
Im folgenden Beispiel wird ein externes Streamobjekt für Azure IoT Edge Hub erstellt. Zum Erstellen einer externen Streameingabe-/-ausgabedatenquelle für Azure IoT Edge Hub müssen Sie zunächst ein externes Dateiformat, um das Layout der Daten zu verstehen, die gelesen oder geschrieben werden.
Erstellen eines externen Dateiformats vom Typ JSON.
CREATE EXTERNAL FILE format InputFileFormat WITH (FORMAT_TYPE = JSON); GO
Erstellen Sie eine externe Datenquelle für den Azure IoT Edge Hub. Das folgende T-SQL-Skript erstellt eine Datenquellenverbindung mit einem IOT Edge Hub, der auf demselben Docker-Host wie Azure SQL Edge ausgeführt wird.
CREATE EXTERNAL DATA SOURCE EdgeHubInput WITH (LOCATION = 'edgehub://'); GO
Erstellen Sie das externe Streamobjekt für den Azure IoT Edge Hub. Das folgende T-SQL-Skript erstellt ein Streamobjekt für den IoT Edge Hub. Im Fall eines IoT Edge Hub-Streamobjekts ist der LOCATION-Parameter der Name des IoT Edge Hub-Themas oder -Kanals für Lese- bzw. Schreibvorgänge.
CREATE EXTERNAL STREAM MyTempSensors WITH ( DATA_SOURCE = EdgeHubInput, FILE_FORMAT = InputFileFormat, LOCATION = N'TemperatureSensors', INPUT_OPTIONS = N'', OUTPUT_OPTIONS = N'' ); GO
Beispiel: Erstellen eines externen Streamobjekts für Azure SQL-Datenbank
Im folgenden Beispiel wird ein externes Streamobjekt für die lokale Datenbank in Azure SQL Edge erstellt.
Erstellen Sie einen Hauptschlüssel in der Datenbank. Dies ist erforderlich, um das Geheimnis für die Anmeldeinformationen zu verschlüsseln.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<<Strong_Password_For_Master_Key_Encryption>>';
Erstellen Sie datenbankweit gültige Anmeldeinformationen für den Zugriff auf die SQL Server-Quelle. Das folgende Beispiel erstellt Anmeldeinformationen für die externe Datenquelle mit IDENTITY = username und SECRET = password.
CREATE DATABASE SCOPED CREDENTIAL SQLCredential WITH IDENTITY = '<SQL_Login>', SECRET = '<SQL_Login_PASSWORD>'; GO
Erstellen Sie mit CREATE EXTERNAL DATA SOURCE eine externe Datenquelle. Im Beispiel unten geschieht Folgendes:
- Wird eine externe Datenquelle mit dem Namen LocalSQLOutput erstellt.
- werden externe Datenquellen (
LOCATION = '<vendor>://<server>[:<port>]'
) identifiziert. Im Beispiel wird auf eine lokale Instanz von Azure SQL Edge verwiesen. - Werden die zuvor erstellten Anmeldeinformationen verwendet.
CREATE EXTERNAL DATA SOURCE LocalSQLOutput WITH ( LOCATION = 'sqlserver://tcp:.,1433', CREDENTIAL = SQLCredential ); GO
Erstellen Sie das externe Streamobjekt. Im folgenden Beispiel wird ein externes Streamobjekt erstellt, das auf eine Tabelle dbo.TemperatureMeasurements in der Datenbank MySQLDatabase verweist.
CREATE EXTERNAL STREAM TemperatureMeasurements WITH ( DATA_SOURCE = LocalSQLOutput, LOCATION = N'MySQLDatabase.dbo.TemperatureMeasurements', INPUT_OPTIONS = N'', OUTPUT_OPTIONS = N'' );
Beispiel: Erstellen eines externen Streamobjekts für Kafka
Im folgenden Beispiel wird ein externes Streamobjekt für die lokale Datenbank in Azure SQL Edge erstellt. In diesem Beispiel wird davon ausgegangen, dass der Kafka-Server für den anonymen Zugriff konfiguriert ist.
Erstellen Sie mit CREATE EXTERNAL DATA SOURCE eine externe Datenquelle. Im Beispiel unten geschieht Folgendes:
CREATE EXTERNAL DATA SOURCE [KafkaInput] WITH (LOCATION = N'kafka://<kafka_bootstrap_server_name_ip>:<port_number>'); GO
Erstellen Sie ein externes Dateiformat für die Kafka-Eingabe. Im folgenden Beispiel wurde ein JSON-Dateiformat mit GZIP-Komprimierung erstellt:
CREATE EXTERNAL FILE FORMAT JsonGzipped WITH ( FORMAT_TYPE = JSON, DATA_COMPRESSION = 'org.apache.hadoop.io.compress.GzipCodec' ); GO
Erstellen Sie das externe Streamobjekt. Im folgenden Beispiel wird ein externes Streamobjekt erstellt, das auf das Kafka-Thema
TemperatureMeasurement
verweist:CREATE EXTERNAL STREAM TemperatureMeasurement WITH ( DATA_SOURCE = KafkaInput, FILE_FORMAT = JsonGzipped, LOCATION = 'TemperatureMeasurement', INPUT_OPTIONS = 'PARTITIONS: 10' ); GO
Erstellen des Streamingauftrags und der Streamingabfragen
Verwenden Sie die gespeicherte Systemprozedur sys.sp_create_streaming_job
, um die Streamingabfragen zu definieren und den Streamingauftrag zu erstellen. Die gespeicherte Prozedur sp_create_streaming_job
nimmt die folgenden Parameter an:
@job_name
: der Name des Streamingauftrags. Die Namen von Streamingaufträgen sind in der gesamten Instanz eindeutig.@statement
: Auf der Stream AnalyticsAbfragesprache basierende Streamingabfrageanweisungen.
Im folgenden Beispiel wird ein einfacher Streamingauftrag mit einer Streamingabfrage erstellt. Diese Abfrage liest die Eingaben aus dem IoT Edge Hub und schreibt in dbo.TemperatureMeasurements
in der Datenbank.
EXEC sys.sp_create_streaming_job @name = N'StreamingJob1',
@statement = N'Select * INTO TemperatureMeasurements from MyEdgeHubInput'
Im folgenden Beispiel wird ein komplexerer Streamingauftrag mit mehreren verschiedenen Abfragen erstellt. Diese Abfragen enthalten eine Abfrage, die die integrierte AnomalyDetection_ChangePoint
-Funktion verwendet, um Anomalien in den Temperaturdaten zu identifizieren.
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
Starten, Beenden, Löschen und Überwachen von Streamingaufträgen
Um einen Streamingauftrag in Azure SQL Edge zu starten, führen Sie die gespeicherte Prozedur sys.sp_start_streaming_job
aus. Die gespeicherte Prozedur erfordert, dass der Streamingauftrag als Eingabe gestartet wird.
EXEC sys.sp_start_streaming_job @name = N'StreamingJob1';
GO
Führen Sie die gespeicherte Prozedur sys.sp_stop_streaming_job
aus, um einen Streamingauftrag zu verhindern. Die gespeicherte Prozedur erfordert, dass der Streamingauftrag als Eingabe beendet wird.
EXEC sys.sp_stop_streaming_job @name = N'StreamingJob1';
GO
Um einen Streamingauftrag zu entfernen (oder zu löschen), führen Sie die gespeicherte Prozedur sys.sp_drop_streaming_job
aus. Die gespeicherte Prozedur erfordert, dass der Streamingauftrag als Eingabe gelöscht wird.
EXEC sys.sp_drop_streaming_job @name = N'StreamingJob1';
GO
Führen Sie die gespeicherte Prozedur sys.sp_get_streaming_job
aus, um den aktuellen Status eines Streamingauftrags abzurufen. Die gespeicherte Prozedur erfordert, dass der Streamingauftrag als Eingabe gelöscht wird. Sie gibt den Namen und den aktuellen Status des Streamingauftrags aus.
EXEC sys.sp_get_streaming_job @name = N'StreamingJob1'
WITH RESULT SETS (
(
name NVARCHAR(256),
status NVARCHAR(256),
error NVARCHAR(256)
)
);
GO
Der Streamingauftrag kann einen der folgenden Zustände aufweisen:
Status | Beschreibung |
---|---|
Erstellt | Der Streamingauftrag wurde erstellt, aber noch nicht gestartet. |
Wird gestartet | Der Streamingauftrag befindet sich in der Startphase. |
Idle | Der Streamingauftrag wird ausgeführt, es sind aber keine Eingaben für die Verarbeitung vorhanden. |
Processing | Der Streamingauftrag wird ausgeführt und verarbeitet Eingaben. Dieser Zustand zeigt einen fehlerfreien Status für den Streamingauftrag an. |
Heruntergestuft | Der Streamingauftrag wird ausgeführt, aber bei der Eingabeverarbeitung sind einige nicht schwerwiegende Fehler aufgetreten. Der Eingabeauftrag wird weiterhin ausgeführt, löscht jedoch Eingaben, bei denen Fehler auftreten. |
Beendet | Der Streamingauftrag wurde beendet. |
Fehler | Der Streamingauftrag ist fehlgeschlagen. Dies ist im Allgemeinen ein Hinweis auf einen schwerwiegenden Fehler während der Verarbeitung. |
Hinweis
Da der Streamingauftrag asynchron ausgeführt wird, treten bei dem Auftrag möglicherweise Fehler zur Laufzeit auf. Um einen Fehler bei einem Streamingauftrag zu beheben, können Sie die gespeicherte Prozedur sys.sp_get_streaming_job
verwenden oder das Docker-Protokoll des Azure SQL Edge-Containers überprüfen, das Fehlerdetails zum Streamingauftrag enthalten kann.