sp_invoke_external_rest_endpoint (Transact-SQL)
gäller för:Azure SQL Database
SQL-databas i Microsoft Fabric
Den sp_invoke_external_rest_endpoint
lagrade proceduren anropar en HTTPS REST-slutpunkt som anges som ett indataargument till proceduren.
Syntax
Transact-SQL syntaxkonventioner
EXEC @returnValue = sp_invoke_external_rest_endpoint
[ @url = ] N'url'
[ , [ @payload = ] N'request_payload' ]
[ , [ @headers = ] N'http_headers_as_json_array' ]
[ , [ @method = ] 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'HEAD' ]
[ , [ @timeout = ] seconds ]
[ , [ @credential = ] credential ]
[ , @response OUTPUT ]
Argument
[ @url = ] N'url'
URL för HTTPS REST-slutpunkten som ska anropas. @url är nvarchar(4000) utan standard.
[ @payload = ] N'request_payload'
Unicode-sträng i ett JSON-, XML- eller TEXT-format som innehåller nyttolasten som ska skickas till HTTPS REST-slutpunkten. Nyttolaster måste vara ett giltigt JSON-dokument, ett välformat XML-dokument eller text. @payload är nvarchar(max) utan standard.
[ @headers = ] N"rubriker"
Rubriker som måste skickas som en del av begäran till HTTPS REST-slutpunkten. Rubriker måste anges med ett platt JSON-format (ett JSON-dokument utan kapslade strukturer). Rubriker som definierats i namn på förbjudna rubriker lista ignoreras även om de uttryckligen skickas i parametern @headers. deras värden ignoreras eller ersätts med systembaserade värden när HTTPS-begäran startas.
Parametern @headers är nvarchar(4000) utan standard.
[ @method = ] Nmetod
HTTP-metod för att anropa URL:en. Måste vara något av följande värden: GET
, POST
, PUT
, PATCH
, DELETE
, HEAD
.
@method är nvarchar(6) med POST
som standardvärde.
[ @timeout = ] sekunder
Tid i sekunder tillåts för HTTPS-anropet att köras. Om den fullständiga HTTP-begäran och -svaret inte kan skickas och tas emot inom den definierade tidsgränsen på några sekunder stoppas körningen av den lagrade proceduren och ett undantag utlöses. Tidsgränsen startar när HTTP-anslutningen startar och slutar när svaret, och nyttolasten som ingår om någon, har tagits emot. @timeout är en positiv liten med standardvärdet 30. Godkända värden: 1 till 230.
[ @credential = ] autentiseringsuppgifter
Ange vilket DATABASE SCOPED CREDENTIAL-objekt som används för att mata in autentiseringsinformation i HTTPS-begäran. @credential är sysname utan standardvärde.
@response UTDATA
Tillåt att svaret som tas emot från den anropade slutpunkten skickas till den angivna variabeln. @response är nvarchar(max).
Returvärde
Körningen returnerar 0
om HTTPS-anropet har utförts och HTTP-statuskoden som tagits emot är en 2xx-statuskod (Success
). Om HTTP-statuskoden som tas emot inte finns i 2xx-intervallet blir returvärdet HTTP-statuskoden som tas emot. Om HTTPS-anropet inte kan utföras alls utlöses ett undantag.
Behörigheter
Kräver KÖR VALFRI EXTERN ENDPOINT-databasbehörighet.
Till exempel:
GRANT EXECUTE ANY EXTERNAL ENDPOINT TO [<PRINCIPAL>];
Svarsformat
Svaret från HTTP-anropet och resulterande data som skickas tillbaka av den anropade slutpunkten är tillgängligt via parametern @response utdata. @response kan innehålla ett JSON-dokument med följande schema:
{
"response": {
"status": {
"http": {
"code": "",
"description": ""
}
},
"headers": {}
},
"result": {}
}
Specifikt:
- svar: ett JSON-objekt som innehåller HTTP-resultatet och andra svarsmetadata.
-
resultat: JSON-nyttolasten som returneras av HTTP-anropet. Utelämnas om det mottagna HTTP-resultatet är 204 (
No Content
).
Eller så kan @response innehålla ett XML-dokument med följande schema:
<output>
<response>
<status>
<http code="" description=" " />
</status>
<headers>
<header key="" value="" />
<header key="" value="" />
</headers>
</response>
<result>
</result>
</output>
Specifikt:
- svar: ett XML-objekt som innehåller HTTP-resultatet och andra svarsmetadata.
-
resultat: XML-nyttolasten som returneras av HTTP-anropet. Utelämnas om det mottagna HTTP-resultatet är 204 (
No Content
).
I avsnittet response
, förutom HTTP-statuskoden och beskrivningen, kommer hela uppsättningen mottagna svarshuvuden att anges i headers
-objektet. I följande exempel visas ett response
avsnitt i JSON (även strukturen för textsvar):
"response": {
"status": {
"http": {
"code": 200,
"description": "OK"
}
},
"headers": {
"Date": "Thu, 08 Sep 2022 21:51:22 GMT",
"Content-Length": "1345",
"Content-Type": "application\/json; charset=utf-8",
"Server": "Kestrel",
"Strict-Transport-Security": "max-age=31536000; includeSubDomains"
}
}
I följande exempel visas ett response
avsnitt i XML:
<response>
<status>
<http code="200" description="OK" />
</status>
<headers>
<header key="Date" value="Tue, 01 Apr 1976 21:12:04 GMT" />
<header key="Content-Length" value="2112" />
<header key="Content-Type" value="application/xml" />
<header key="Server" value="Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0" />
<header key="x-ms-request-id" value="31536000-64bi-64bi-64bi-31536000" />
<header key="x-ms-version" value="2021-10-04" />
<header key="x-ms-creation-time" value="Wed, 19 Apr 2023 22:17:33 GMT" />
<header key="x-ms-server-encrypted" value="true" />
</headers>
</response>
Tillåtna slutpunkter
Endast anrop till slutpunkter i följande tjänster tillåts:
Azure Service | Domän |
---|---|
Azure Functions | *.azurewebsites.net |
Azure Apps Service | *.azurewebsites.net |
Azure App Service-miljö | *.appserviceenvironment.net |
Azure Static Web Apps | *.azurestaticapps.net |
Azure Logic Apps | *.logic.azure.com |
Azure Event Hubs | *.servicebus.windows.net |
Azure Event Grid | *.eventgrid.azure.net |
Azure Cognitive Services | *.cognitiveservices.azure.com |
Azure OpenAI | *.openai.azure.com |
PowerApps/Dataverse | *.api.crm.dynamics.com |
Microsoft Dynamics | *.dynamics.com |
Azure Container Instances | *.azurecontainer.io |
Azure Container Apps | *.azurecontainerapps.io |
Power BI | api.powerbi.com |
Microsoft Graph | graph.microsoft.com |
Analysis Services | *.asazure.windows.net |
IoT Central | *.azureiotcentral.com |
API Management | *.azure-api.net |
Azure Blob Storage | *.blob.core.windows.net |
Azure Files | *.file.core.windows.net |
Azure Queue Storage | *.queue.core.windows.net |
Azure Table Storage | *.table.core.windows.net |
Azure Communication Services | *.communications.azure.com |
Bing-sökning | api.bing.microsoft.com |
Azure Key Vault | *.vault.azure.net |
Azure AI Search | *.search.windows.net |
Azure Maps | *.atlas.microsoft.com |
Azure AI Translator | api.cognitive.microsofttranslator.com |
Regler för utgående brandvägg för Azure SQL Database och Azure Synapse Analytics kontrollmekanism kan användas för att ytterligare begränsa utgående åtkomst till externa slutpunkter.
Not
Om du vill anropa en REST-tjänst som inte finns i listan över tillåtna kan du använda API Management för att på ett säkert sätt exponera önskad tjänst och göra den tillgänglig för sp_invoke_external_rest_endpoint
.
Gränser
Nyttolaststorlek
Nyttolasten, både när den tas emot och när den skickas, kodas UTF-8 när den skickas via kabeln. I det formatet är dess storlek begränsad till 100 MB.
URL-längd
Den maximala URL-längden (som genereras efter användning av parametern @url och tillägg av angivna autentiseringsuppgifter i frågesträngen, om någon) är 8 KB. den maximala frågesträngslängden (frågesträng + frågesträng för autentiseringsuppgifter) är 4 KB.
Sidhuvudstorlek
Den maximala storleken på begäran och svarshuvud (alla rubrikfält: huvuden som skickas via @headers parameter + autentiseringshuvud + system angivna huvuden) är 8 KB.
Strypning
Antalet samtidiga anslutningar till externa slutpunkter som görs via sp_invoke_external_rest_endpoint
begränsas till 10% arbetstrådar, med högst 150 arbetare. På en enskild databas tillämpas begränsning på databasnivå, och på en elastisk pool tillämpas begränsning både på databas- och poolnivå.
Kör följande fråga för att kontrollera hur många samtidiga anslutningar en databas kan upprätthålla:
SELECT
[database_name],
DATABASEPROPERTYEX(DB_NAME(), 'ServiceObjective') AS service_level_objective,
[slo_name] as service_level_objective_long,
[primary_group_max_outbound_connection_workers] AS max_database_outbound_connection,
[primary_pool_max_outbound_connection_workers] AS max_pool_outbound_connection
FROM
sys.dm_user_db_resource_governance
WHERE
database_id = DB_ID();
Om en ny anslutning till en extern slutpunkt med sp_invoke_external_rest_endpoint
provas när de maximala samtidiga anslutningarna redan har nåtts, utlöses fel 10928 (eller 10936 om du har nått gränsen för elastiska pooler). Till exempel:
Msg 10928, Level 16, State 4, Procedure sys.sp_invoke_external_rest_endpoint_internal, Line 1 [Batch Start Line 0]
Resource ID : 1. The outbound connections limit for the database is 20 and has been reached.
See 'https://docs.microsoft.com/azure/azure-sql/database/resource-limits-logical-server' for assistance.
Autentiseringsuppgifter
Vissa REST-slutpunkter kräver autentisering för att kunna anropas korrekt. Autentisering kan vanligtvis göras genom att skicka vissa specifika nyckel/värde-par i frågesträngen eller i HTTP-huvudena som angetts med begäran.
Det är möjligt att använda DATABASE SCOPED CREDENTIALS för att lagra autentiseringsdata på ett säkert sätt (t.ex. en ägartoken) som ska användas av sp_invoke_external_rest_endpoint
för att anropa en skyddad slutpunkt. När du skapar DATABASE SCOPED CREDENTIAL använder du parametern IDENTITY för att ange vilka autentiseringsdata som ska skickas till den anropade slutpunkten och hur. IDENTITY har stöd för fyra alternativ:
-
HTTPEndpointHeaders
: skicka angivna autentiseringsdata med hjälp av begärandehuvuden -
HTTPEndpointQueryString
: skicka angivna autentiseringsdata med hjälp av query string -
Managed Identity
: skicka systemtilldelade hanterad identitet med hjälp av begärandehuvudena -
Shared Access Signature
: ge begränsad delegerad åtkomst till resurser via en signerad URL- (kallas även SAS)
den skapade DATABASE SCOPED CREDENTIAL kan användas via parametern @credential:
EXEC sp_invoke_external_rest_endpoint
@url = N'https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>?key1=value1',
@credential = [https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>]
Med det här IDENTITY-värdet läggs DATABASE SCOPED CREDENTIAL till i begärandehuvudena. Nyckel/värde-paret som innehåller autentiseringsinformationen måste anges via parametern SECRET med ett platt JSON-format. Till exempel:
CREATE DATABASE SCOPED CREDENTIAL [https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>]
WITH IDENTITY = 'HTTPEndpointHeaders', SECRET = '{"x-functions-key":"<your-function-key-here>"}';
Namnregler för autentiseringsuppgifter
Den skapade DATABASE SCOPED CREDENTIAL måste följa specifika regler för att kunna användas med sp_invoke_external_rest_endpoint
. Reglerna är följande:
- Måste vara en giltig URL
- URL-domänen måste vara en av de domäner som ingår i listan över tillåtna domäner
- URL:en får inte innehålla en frågesträng
- Protokoll + Fullständigt domännamn (FQDN) för den anropade URL:en måste matcha Protokoll + FQDN för autentiseringsuppgiftsnamnet
- Varje del av den kallade URL-sökvägen måste matcha helt med respektive del av URL-sökvägen i autentiseringsuppgiftsnamnet
- Autentiseringsuppgifterna måste peka på en sökväg som är mer allmän än begärande-URL:en. Till exempel kan en autentiseringsuppgift som skapats för sökvägen
https://northwind.azurewebsite.net/customers
inte användas för URL-https://northwind.azurewebsite.net
Namnregler för sortering och autentiseringsuppgifter
RFC 3986 Avsnitt 6.2.2.1 anger att "När en URI använder komponenter i den generiska syntaxen gäller alltid reglerna för komponentsyntaxens likvärdighet. nämligen att systemet och värden är skiftlägesokänsliga", och RFC 7230 avsnitt 2.7.3 nämner att "alla andra jämförs på ett skiftlägeskänsligt sätt".
Eftersom det finns en sorteringsregel som har angetts på databasnivå tillämpas följande logik, så att den överensstämmer med databassorteringsregeln och RFC som nämns ovan. (Den beskrivna regeln kan potentiellt vara mer restriktiv än RFC-reglerna, till exempel om databasen är inställd på att använda en skiftlägeskänslig sortering.):
- Kontrollera om URL:en och autentiseringsuppgifterna matchar med hjälp av RFC, vilket innebär:
- Kontrollera schemat och värden med hjälp av en skiftlägesokänslig sortering (
Latin1_General_100_CI_AS_KS_WS_SC
) - Kontrollera att alla andra segment i URL:en jämförs i en skiftlägeskänslig sortering (
Latin1_General_100_BIN2
)
- Kontrollera schemat och värden med hjälp av en skiftlägesokänslig sortering (
- Kontrollera att URL:en och autentiseringsuppgifterna matchar med hjälp av databassorteringsreglerna (och utan att göra någon URL-kodning).
Bevilja behörigheter för att använda autentiseringsuppgifter
Databasanvändare som har åtkomst till en DATABASE SCOPED CREDENTIAL måste ha behörighet att använda den autentiseringsuppgiften.
Om du vill använda autentiseringsuppgifterna måste en databasanvändare ha REFERENCES
behörighet för en specifik autentiseringsuppgift:
GRANT REFERENCES ON DATABASE SCOPED CREDENTIAL::[<CREDENTIAL_NAME>] TO [<PRINCIPAL>];
Anmärkningar
Väntetyp
När sp_invoke_external_rest_endpoint
väntar på att anropet till den anropade tjänsten ska slutföras rapporterar det en HTTP_EXTERNAL_CONNECTION väntetyp.
HTTPS och TLS
Endast slutpunkter som är konfigurerade att använda HTTPS med TLS-krypteringsprotokoll stöds.
HTTP-omdirigeringar
sp_invoke_external_rest_endpoint
följer inte automatiskt någon HTTP-omdirigering som tas emot som ett svar från den anropade slutpunkten.
HTTP-huvuden
sp_invoke_external_rest_endpoint
matar automatiskt in följande huvuden i HTTP-begäran:
-
innehållstyp: inställd på
application/json; charset=utf-8
-
acceptera: inställd på
application/json
-
: ange
<EDITION>/<PRODUCT VERSION>
till exempel:SQL Azure/12.0.2000.8
Även om alltid skrivs över av den lagrade proceduren kan innehållstyp och acceptera huvudvärden vara användardefinierade via parametern @headers. Endast medietypsdirektivet tillåts anges i innehållstypen och det går inte att ange teckenuppsättningen eller gränsdirektiven.
Nyttolast för begäran och svar som stöds medietyper
Följande är godkända värden för rubriken innehållstyp.
- application/json
- application/vnd.microsoft.*.json
- application/xml
- application/vnd.microsoft.*.xml
- application/vnd.microsoft.*+xml
- application/x-www-form-urlencoded
- SMS/*
För accepterar sidhuvud är följande godkända värden.
- application/json
- application/xml
- SMS/*
Mer information om texthuvudtyper finns i registret texttyp i IANA.
Not
Om du testar anrop av REST-slutpunkten med andra verktyg, till exempel cURL- eller någon modern REST-klient som Insomnia, måste du inkludera samma huvuden som matas in automatiskt av sp_invoke_external_rest_endpoint
för att få samma beteende och resultat.
Metodtips
Använda en batchteknik
Om du måste skicka en uppsättning rader till en REST-slutpunkt, till exempel till en Azure-funktion eller till en händelsehubb, rekommenderar vi att du batchar raderna i ett enda JSON-dokument för att undvika HTTPS-anropskostnaderna för varje rad som skickas. Detta kan göras med hjälp av FOR JSON
-instruktionen, till exempel:
-- create the payload
DECLARE @payload AS NVARCHAR(MAX);
SET @payload = (
SELECT [object_id], [name], [column_id]
FROM sys.columns
FOR JSON AUTO
);
-- invoke the REST endpoint
DECLARE @retcode INT,
@response AS NVARCHAR(MAX);
EXEC @retcode = sp_invoke_external_rest_endpoint @url = '<REST_endpoint>',
@payload = @payload,
@response = @response OUTPUT;
-- return the result
SELECT @retcode, @response;
Exempel
Här hittar du några exempel på hur du använder sp_invoke_external_rest_endpoint
för att integrera med vanliga Azure-tjänster som Azure Functions eller Azure Event Hubs. Fler exempel för att integrera med andra tjänster finns på GitHub-.
A. Anropa en Azure-funktion med en HTTP-utlösarbindning utan autentisering
I följande exempel anropas en Azure-funktion med hjälp av en HTTP-utlösarbindning som tillåter anonym åtkomst.
DECLARE @ret INT, @response NVARCHAR(MAX);
EXEC @ret = sp_invoke_external_rest_endpoint
@url = N'https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>?key1=value1',
@headers = N'{"header1":"value_a", "header2":"value2", "header1":"value_b"}',
@payload = N'{"some":{"data":"here"}}',
@response = @response OUTPUT;
SELECT @ret AS ReturnCode, @response AS Response;
B. Anropa en Azure-funktion med en HTTP-utlösarbindning med en auktoriseringsnyckel
I följande exempel anropas en Azure-funktion med en HTTP-utlösarbindning som konfigurerats för att kräva en auktoriseringsnyckel. Auktoriseringsnyckeln skickas i x-function-key
-huvudet enligt vad som krävs av Azure Functions. Mer information finns i Azure Functions – API-nyckelauktorisering.
CREATE DATABASE SCOPED CREDENTIAL [https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>]
WITH IDENTITY = 'HTTPEndpointHeaders', SECRET = '{"x-functions-key":"<your-function-key-here>"}';
DECLARE @ret INT, @response NVARCHAR(MAX);
EXEC @ret = sp_invoke_external_rest_endpoint
@url = N'https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>?key1=value1',
@headers = N'{"header1":"value_a", "header2":"value2", "header1":"value_b"}',
@credential = [https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>],
@payload = N'{"some":{"data":"here"}}',
@response = @response OUTPUT;
SELECT @ret AS ReturnCode, @response AS Response;
C. Läsa innehållet i en fil från Azure Blob Storage med en SAS-token
I det här exemplet läss en fil från Azure Blob Storage med hjälp av en SAS-token för autentisering. Resultatet returneras i XML, så du behöver använda rubriken "Accept":"application/xml"
.
DECLARE @ret INT, @response NVARCHAR(MAX);
EXEC @ret = sp_invoke_external_rest_endpoint
@url = N'https://blobby.blob.core.windows.net/datafiles/my_favorite_blobs.txt?sp=r&st=2023-07-28T19:56:07Z&se=2023-07-29T03:56:07Z&spr=https&sv=2022-11-02&sr=b&sig=XXXXXX1234XXXXXX6789XXXXX',
@headers = N'{"Accept":"application/xml"}',
@method = 'GET',
@response = @response OUTPUT;
SELECT @ret AS ReturnCode, @response AS Response;
D. Skicka ett meddelande till en händelsehubb med azure SQL Database Managed Identity
Det här exemplet visar hur du kan skicka meddelanden till Event Hubs med hjälp av Azure SQL Managed Identity. Kontrollera att du har konfigurerat systemhanterad identitet för den logiska Azure SQL Database-servern som är värd för databasen, till exempel:
az sql server update -g <resource-group> -n <azure-sql-server> --identity-type SystemAssigned
Därefter konfigurerar du Event Hubs så att Azure SQL Server hanterad identitet kan skicka meddelanden ("Azure Event Hubs Data Sender"-roll) till önskad händelsehubb. Mer information finns i Använda händelsehubbar med hanterade identiteter.
När detta är klart kan du använda identitetsnamnet Managed Identity
när du definierar databasens begränsade autentiseringsuppgifter som ska användas av sp_invoke_external_rest_endpoint
. Som beskrivs i Autentisera ett program med Microsoft Entra-ID för att få åtkomst till Event Hubs-resurserär resursnamnet (eller ID:t) som ska användas när du använder Microsoft Entra-autentisering https://eventhubs.azure.net
:
CREATE DATABASE SCOPED CREDENTIAL [https://<EVENT-HUBS-NAME>.servicebus.windows.net]
WITH IDENTITY = 'Managed Identity',
SECRET = '{"resourceid": "https://eventhubs.azure.net"}';
GO
DECLARE @Id UNIQUEIDENTIFIER = NEWID();
DECLARE @payload NVARCHAR(MAX) = (
SELECT *
FROM (
VALUES (@Id, 'John', 'Doe')
) AS UserTable(UserId, FirstName, LastName)
FOR JSON AUTO,
WITHOUT_ARRAY_WRAPPER
)
DECLARE @url NVARCHAR(4000) = 'https://<EVENT-HUBS-NAME>.servicebus.windows.net/from-sql/messages';
DECLARE @headers NVARCHAR(4000) = N'{"BrokerProperties": "' + STRING_ESCAPE('{"PartitionKey": "' + CAST(@Id AS NVARCHAR(36)) + '"}', 'json') + '"}'
DECLARE @ret INT, @response NVARCHAR(MAX);
EXEC @ret = sp_invoke_external_rest_endpoint @url = @url,
@headers = @headers,
@credential = [https://<EVENT-HUBS-NAME>.servicebus.windows.net],
@payload = @payload,
@response = @response OUTPUT;
SELECT @ret AS ReturnCode, @response AS Response;
E. Läsa och skriva en fil till Azure File Storage med autentiseringsuppgifter för Azure SQL Database
Det här exemplet skriver en fil till en Azure File Storage med en Azure SQL Database-omfångsautentisering för autentisering och returnerar sedan innehållet. Resultatet returneras i XML, så du behöver använda rubriken "Accept":"application/xml"
.
Börja med att skapa en huvudnyckel för Azure SQL Database
create master key encryption by password = '2112templesmlm2BTS21.qwqw!@0dvd'
go
Skapa sedan autentiseringsuppgifterna för databasen med hjälp av SAS-token som tillhandahålls av Azure Blob Storage-kontot.
create database scoped credential [filestore]
with identity='SHARED ACCESS SIGNATURE',
secret='sv=2022-11-02&ss=bfqt&srt=sco&sp=seespotrun&se=2023-08-03T02:21:25Z&st=2023-08-02T18:21:25Z&spr=https&sig=WWwwWWwwWWYaKCheeseNXCCCCCCDDDDDSSSSSU%3D'
go
Skapa sedan filen och lägg till text i den med följande två instruktioner:
declare @payload nvarchar(max) = (select * from (values('Hello from Azure SQL!', sysdatetime())) payload([message], [timestamp])for json auto, without_array_wrapper)
declare @response nvarchar(max), @url nvarchar(max), @headers nvarchar(1000);
declare @len int = len(@payload)
-- Create the File
set @url = 'https://myfiles.file.core.windows.net/myfiles/test-me-from-azure-sql.json'
set @headers = json_object(
'x-ms-type': 'file',
'x-ms-content-length': cast(@len as varchar(9)),
'Accept': 'application/xml')
exec sp_invoke_external_rest_endpoint
@url = @url,
@method = 'PUT',
@headers = @headers,
@credential = [filestore],
@response = @response output
select cast(@response as xml);
-- Add text to the File
set @headers = json_object(
'x-ms-range': 'bytes=0-' + cast(@len-1 as varchar(9)),
'x-ms-write': 'update',
'Accept': 'application/xml');
set @url = 'https://myfiles.file.core.windows.net/myfiles/test-me-from-azure-sql.json'
set @url += '?comp=range'
exec sp_invoke_external_rest_endpoint
@url = @url,
@method = 'PUT',
@headers = @headers,
@payload = @payload,
@credential = [filestore],
@response = @response output
select cast(@response as xml)
go
Använd slutligen följande instruktion för att läsa filen
declare @response nvarchar(max);
declare @url nvarchar(max) = 'https://myfiles.file.core.windows.net/myfiles/test-me-from-azure-sql.json'
exec sp_invoke_external_rest_endpoint
@url = @url,
@headers = '{"Accept":"application/xml"}',
@credential = [filestore],
@method = 'GET',
@response = @response output
select cast(@response as xml)
go
Relaterat innehåll
- Resurshantering i Azure SQL Database
- sys.dm_resource_governor_resource_pools_history_ex
- sys.dm_resource_governor_workload_groups_history_ex
- sys.dm_user_db_resource_governance
- BEVILJA databasbehörigheter (Transact-SQL)
- CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)
- API Management
- sp_invoke_external_rest_endpoint användningsexempel