Verwenden von RESTful-Endpunkten zum Importieren von Daten in Azure SQL-Datenbank
Mit Azure SQL-Datenbank können Sie Daten mithilfe eines externen REST-Endpunkts und der vom System gespeicherten Prozedur sp_invoke_external_rest_endpoint importieren. Sie können alle HTTP-REST-Endpunkte direkt von Ihren SQL-Abfragen aus aufrufen, sodass sie in eine Vielzahl von Diensten integriert werden können, einschließlich Azure Functions, Azure Logic Apps und Azure App Service.
Wenn Sie einen REST-Dienst aufrufen möchten, der nicht in der Zulassungsliste enthalten ist, können Sie Azure API Management verwenden, um den gewünschten Dienst auf sichere Weise verfügbar zu machen, und ihn dann sp_invoke_external_rest_endpoint zur Verfügung stellen.
Erkunden der API-Nutzung
Sehen wir uns einige der wichtigsten Anwendungsfälle und Szenarien an, in denen diese Funktionalität von Vorteil sein kann.
Datenverarbeitung mit Azure Functions: Sie können
sp_invoke_external_rest_endpointverwenden, um eine Azure-Funktion aufzurufen, die Daten verarbeitet. Beispielsweise können Sie einen Datenbatch an eine Azure-Funktion für komplexe Berechnungen oder Transformationen senden und dann die Ergebnisse wieder in Ihrer Datenbank speichern.Integration in Cognitive Services: Sie können Cognitive Services-APIs aufrufen, um Aufgaben wie Stimmungsanalyse, Bilderkennung oder Sprachübersetzung auszuführen. So können Sie beispielsweise Textdaten an die Textanalyse-API senden, um Kundenfeedback zu analysieren und die Stimmungsbewertungen in Ihrer Datenbank zu speichern.
Ereignisgestützte Workflows: Verwenden Sie
sp_invoke_external_rest_endpoint, um Workflows in Azure Logic Apps oder Power Automate auszulösen. Dies kann nützlich sein, um Geschäftsprozesse zu automatisieren, z. B. das Senden von Benachrichtigungen oder das Aktualisieren von Datensätzen in anderen Systemen basierend auf Änderungen in Ihrer Datenbank.Datenanreicherung: Erweitern Sie Ihre Daten, indem Sie externe APIs aufrufen. Sie können z. B. eine REST-API aufrufen, um zusätzliche Informationen zu einem Produkt oder Kunden abzurufen, und die Daten dann in Ihrer Datenbank speichern.
API Management: Verwenden Sie
sp_invoke_external_rest_endpoint, um mit APIs zu interagieren, die von Azure API Management verwaltet werden. Auf diese Weise können Sie vorhandene APIs für verschiedene Funktionen verwenden, ohne komplexen Integrationscode schreiben zu müssen.
Implementieren sicherer API-Aufrufe
REST-Endpunkte erfordern häufig eine Authentifizierung, die über Schlüssel-Wert-Paare in der Abfragezeichenfolge oder den HTTP-Headern erfolgen kann. Sie können diese Daten sicher speichern, indem Sie DATABASE SCOPED CREDENTIALS mit dem Parameter IDENTITY verwenden, der angibt, wie die Authentifizierungsdaten übergeben werden sollen. Der Parameter IDENTITY unterstützt vier Optionen: HTTPEndpointHeaders, HTTPEndpointQueryString, verwaltete Identityund Shared Access Signature (SAS).
Die erstellten datenbankweiten Anmeldeinformationen (DATABASE SCOPED CREDENTIAL) können über den Parameter @credential in der gespeicherten Prozedur sp_invoke_external_rest_endpoint verwendet werden. Die Authentifizierungsinformationen müssen über den Parameter SECRET in einem flachen JSON-Format bereitgestellt werden.
CREATE DATABASE SCOPED CREDENTIAL [https://.azurewebsites.net/api/]
WITH IDENTITY = 'HTTPEndpointHeaders', SECRET = '{"x-functions-key":"<your-function-key>"}';
Aufrufen des REST-Endpunkts
Betrachten wir ein Szenario, in dem Sie Daten aus einer REST-API importieren möchten, die Wetterinformationen bereitstellt. Sie verfügen bereits über die Tabelle WeatherData in der Azure SQL-Datenbank mit den Spalten City, Temperature, Condition und Timestamp.
Verwenden Sie die gespeicherte Prozedur sp_invoke_external_rest_endpoint, um die REST-API aufzurufen und die Daten in Ihre Tabelle einzufügen:
DECLARE @response NVARCHAR(MAX);
EXEC sp_invoke_external_rest_endpoint
@method = 'GET',
@url = 'https://api.weather.com/v3/wx/conditions/current?apiKey=your_api_key&format=json',
@response = @response OUTPUT;
INSERT INTO WeatherData (City, Temperature, Condition, Timestamp)
SELECT
JSON_VALUE(@response, '$.location.city'),
JSON_VALUE(@response, '$.temperature'),
JSON_VALUE(@response, '$.weatherCondition'),
GETDATE();
Wenn Sie die Verwendung von REST-Endpunkten in Betracht ziehen, stellen Sie sicher, dass die Endpunkte, die Sie aufrufen, sicher sind und dass alle vertraulichen Daten entsprechend behandelt werden. Berücksichtigen Sie die Auswirkungen häufiger API-Aufrufe auf die Leistung, insbesondere bei großen Datasets oder häufigen Aktualisierungen. Implementieren Sie außerdem eine Fehlerbehandlung, um potenzielle Probleme mit API-Aufrufen, wie Timeouts oder ungültige Antworten, zu bewältigen.