Konfigurera en SQL Server-källfas i förhandsversionen av Azure IoT Data Processor
Viktigt!
Förhandsversion av Azure IoT Operations – aktiverad av Azure Arc finns för närvarande i FÖRHANDSVERSION. Du bör inte använda den här förhandsgranskningsprogramvaran i produktionsmiljöer.
Juridiska villkor för Azure-funktioner i betaversion, förhandsversion eller som av någon annan anledning inte har gjorts allmänt tillgängliga ännu finns i kompletterande användningsvillkor för Microsoft Azure-förhandsversioner.
Källfasen är den första och nödvändiga fasen i en Azure IoT Data Processor Preview-pipeline. Källsteget hämtar data till databearbetningspipelinen och förbereder dem för vidare bearbetning. Med SQL Server-källsteget kan du läsa data från en Microsoft SQL Server-databas med ett användardefinierat intervall.
I källfasen definierar du:
- Anslut ionsinformation för SQL Server.
- Det intervall med vilket SQL Server-databasen ska frågas. Fasen väntar på ett resultat innan intervalltimern återställs.
- En partitioneringskonfiguration baserat på dina specifika databehandlingskrav.
Förutsättningar
- En fungerande instans av dataprocessorn distribueras.
- En SQL Server-databas med alla nödvändiga rådata är i drift och kan nås.
Förbereda SQL Server-databasen
Innan du kan läsa från SQL Server-databasen måste du bevilja åtkomst till databasen från pipelinen. Du kan använda Username/Password
, Managed identity
eller Service principal
för att autentisera pipelinen till databasen. Fördelen med att använda en hanterad identitet är att du inte behöver hantera livscykeln för tjänstens huvudnamn eller lösenordsinformationen. Den hanterade identiteten hanteras automatiskt av Azure och är kopplad till livscykeln för den resurs som den har tilldelats.
Så här skapar du ett huvudnamn för tjänsten med en klienthemlighet:
Använd följande Azure CLI-kommando för att skapa ett huvudnamn för tjänsten.
az ad sp create-for-rbac --name <YOUR_SP_NAME>
Utdata från det här kommandot innehåller en
appId
,displayName
,password
ochtenant
. Anteckna de här värdena som ska användas när du konfigurerar åtkomsten till din molnresurs, till exempel Microsoft Fabric, skapar en hemlighet och konfigurerar ett pipelinemål:{ "appId": "<app-id>", "displayName": "<name>", "password": "<client-secret>", "tenant": "<tenant-id>" }
Om du vill bevilja åtkomst till huvudnamns-ID:t i SQL Server-databasen kör du följande kommando i databasen:
CREATE USER processor FROM EXTERNAL PROVIDER WITH OBJECT_ID=<principalId>;
Kommentar
Om du vill köra föregående kommando måste du använda Etttra-ID:t som anges som administratör i SQL Server.
För att källfasen ska kunna ansluta till SQL Server-databasen behöver den åtkomst till en hemlighet som innehåller autentiseringsinformationen. Så här skapar du en hemlighet:
Använd följande kommando för att lägga till en hemlighet i ditt Azure Key Vault som innehåller klienthemligheten som du antecknade när du skapade tjänstens huvudnamn:
az keyvault secret set --vault-name <your-key-vault-name> --name AccessADXSecret --value <client-secret>
Lägg till den hemliga referensen till kubernetes-klustret genom att följa stegen i Hantera hemligheter för din Azure IoT Operations-distribution.
Konfigurera SQL Server-källan
Så här konfigurerar du SQL Server-källan:
- Ange information om SQL Server-databasen. Den här konfigurationen innehåller servernamnet och en fråga för att hämta data.
- Ange autentiseringsmetoden. För närvarande begränsad till användarnamn/lösenordsbaserad eller tjänsthuvudnamnsbaserad autentisering.
I följande tabell beskrivs konfigurationsparametrarna för SQL Server-källan:
Fält | Type | Beskrivning | Obligatoriskt | Standardvärde | Exempel |
---|---|---|---|---|---|
Name | String | Ett kund synligt namn för källfasen. | Obligatoriskt | NA | erp-database |
beskrivning | String | En kund synlig beskrivning av källsteget. | Valfritt | NA | Enterprise database |
Servervärd | String | Url:en som ska användas för att ansluta till servern. | Obligatoriskt | NA | https://contoso.com/some/url/path |
Serverport | Integer | Portnumret som ska anslutas till på servern. | Obligatoriskt | 1433 |
1433 |
Autentisering | Authentication type | Autentiseringsmetoden för att ansluta till servern. En av: None , Username/Password , Managed identity eller Service principal . |
Valfritt | NA |
Username/Password |
Användarnamn/lösenord > användarnamn | String | Användarnamnet för autentisering med användarnamn/lösenord | Ja | NA | myuser |
Användarnamn/lösenordshemlighet > | String | Referens till lösenordet som lagras i Azure Key Vault. | Ja | Ja | AKV_USERNAME_PASSWORD |
Klient-ID för tjänstens huvudnamn > | String | Klientorganisations-ID för tjänstens huvudnamn. | Ja | NA | <Tenant ID> |
Klient-ID för tjänstens huvudnamn > | String | Klient-ID för tjänstens huvudnamn. | Ja | NA | <Client ID> |
Tjänstens huvudnamnshemlighet > | String | Referens till klienthemligheten för tjänstens huvudnamn som lagras i Azure Key Vault. | Ja | NA | AKV_SERVICE_PRINCIPAL |
Databas | String | Namnet på DEN SQL Server-databas som du vill fråga efter. | Obligatoriskt | NA | erp_db |
Datafråga | String | Frågan som ska köras mot databasen. | Obligatoriskt | NA | SELECT * FROM your_table WHERE column_name = foo |
Frågeintervall | Varaktighet | Strängrepresentation av tiden innan nästa API-anrop. | Obligatoriskt | 10s |
24h |
Dataformat | Format | Dataformat för inkommande data | Obligatoriskt | NA | {"type": "json"} |
Partitionering | Partitionering | Partitioneringskonfiguration för källsteget. | Obligatoriskt | NA | Se partitionering |
Mer information om hemligheter finns i Hantera hemligheter för distributionen av Azure IoT Operations Preview.
Kommentar
Tidsgräns för begäranden om 30 sekunder om det inte finns något svar från SQL-servern.
Välj dataformat
I en databehandlingspipeline anger formatfältet i källsteget hur inkommande data ska deserialiseras. Som standard använder raw
databehandlingspipelinen formatet som innebär att den inte konverterar inkommande data. Om du vill använda många dataprocessorfunktioner, till exempel Filter
eller Enrich
faser i en pipeline, måste du deserialisera dina data i indatafasen. Du kan välja att deserialisera inkommande data från JSON
, jsonStream
, MessagePack
, CBOR
, CSV
eller Protobuf
format till ett läsbart meddelande för dataprocessorn för att kunna använda den fullständiga databehandlingsfunktionen.
I följande tabeller beskrivs de olika konfigurationsalternativen för deserialisering:
Fält | beskrivning | Obligatoriskt | Standardvärde | Värde |
---|---|---|---|---|
Dataformat | Typ av dataformat. | Ja | Raw |
Raw JSON jsonStream MessagePack CBOR CSV Protobuf |
Fältet Data Format
är obligatoriskt och dess värde avgör de andra obligatoriska fälten.
Om du vill deserialisera CSV-meddelanden måste du också ange följande fält:
Om du vill deserialisera Protobuf-meddelanden måste du också ange följande fält:
Fält | beskrivning | Obligatoriskt | Värde | Exempel |
---|---|---|---|---|
Deskriptor | Den base64-kodade beskrivningen för protobuf-definitionen. | Ja | - | Zhf... |
Meddelande | Namnet på den meddelandetyp som används för att formatera data. | Ja | - | pipeline |
Paket | Namnet på paketet i beskrivningen där typen definieras. | Ja | - | schedulerv1 |
Kommentar
Dataprocessorn stöder endast en meddelandetyp i varje .proto-fil .
Konfigurera partitionering
Partitionering i en pipeline delar in inkommande data i separata partitioner. Partitionering möjliggör dataparallellitet i pipelinen, vilket kan förbättra dataflödet och minska svarstiden. Partitioneringsstrategier påverkar hur data bearbetas i de andra stegen i pipelinen. Det senaste kända värdesteget och aggregeringssteget fungerar till exempel på varje logisk partition.
Om du vill partitionera dina data anger du en partitioneringsstrategi och antalet partitioner som ska användas:
Dataprocessorn lägger till metadata i det inkommande meddelandet. Se Översikt över dataprocessorns meddelandestruktur för att förstå hur du korrekt anger partitioneringsuttrycket som körs på det inkommande meddelandet. Som standard är partitioneringsuttrycket inställt 0
på med partitionstypen som ID
att skicka alla inkommande data till en enda partition.
Rekommendationer och mer information finns i Vad är partitionering?.