Esecuzione di transazioni del gruppo di entità
Il servizio tabelle supporta le transazioni batch sulle entità che si trovano nella stessa tabella e appartengono allo stesso gruppo di partizioni. Sono supportate più entità inserisci, entità di aggiornamento, entità merge, elimina entità, inserimento o sostituzione e operazioni di inserimento o unione entità all'interno di una singola transazione.
Requisiti per le transazioni del gruppo di entità
Una transazione di gruppi di entità deve soddisfare i requisiti seguenti:
Tutte le entità soggette alle operazioni come parte della transazione devono presentare lo stesso valore
PartitionKey
.Un'entità può comparire una sola volta nella transazione e solo un'operazione può essere eseguita su di essa.
La transazione può includere al massimo 100 entità e il relativo payload totale può essere diverso da 4 MiB di dimensioni.
Tutte le entità sono soggetti alle limitazioni descritte in Informazioni sul modello di dati del servizio tabelle.
Supporto del servizio tabelle per richieste batch di OData
La semantica per le transazioni del gruppo di entità è definita dalla specifica del protocollo OData. Nella specifica OData sono definiti i concetti seguenti relativi alle richieste batch:
Un set di modifiche è un gruppo di una o più operazioni di inserimento, aggiornamento o eliminazione.
Un batch è un contenitore di operazioni, inclusi uno o più set di modifiche e operazioni di query.
Il servizio tabelle supporta un subset della funzionalità definita dalla specifica OData:
- Il servizio tabelle supporta un set di modifiche per batch. Il set di modifiche può includere più operazioni di inserimento, aggiornamento ed eliminazione. Se un batch include più di un set di modifiche, il primo set verrà elaborato dal servizio, mentre quelli successivi verranno rifiutati con il codice di stato 400 (Richiesta non valida).
Importante
In un set di modifiche non è consentito eseguire più operazioni in una singola entità.
Non è consentito eseguire un'operazione di query in un batch che contiene operazioni di inserimento, aggiornamento o eliminazione. Deve essere inviata singolarmente nel batch.
Le operazioni in un set di modifiche vengono elaborate in modo atomico. Ciò significa che tutte le operazioni nel set di modifiche avranno esito negativo o positivo. Le operazioni vengono elaborate nell'ordine in cui sono specificate nel set di modifiche.
Il servizio tabelle non supporta le operazioni di collegamento in un set di modifiche.
Il servizio tabelle supporta un massimo di 100 operazioni in un set di modifiche.
Transazioni di gruppi di entità tramite REST
Nelle sezioni seguenti viene descritto come creare una richiesta batch e come interpretarne la risposta e vengono forniti alcuni esempi.
Sintassi della richiesta batch
Per eseguire una richiesta batch tramite REST, specificare l'opzione $batch
nell'URI della richiesta. Ad esempio:
https://myaccount.table.core.windows.net/$batch
Si noti che l'URI della richiesta non include il nome della tabella.
Una richiesta batch viene inviata al server con una singola direttiva POST. La richiesta deve includere l'intestazione x-ms-version
; il valore dell'intestazione deve essere impostato su 2009-04-14
o su una versione successiva.
Il payload XML è un messaggio MIME in più parti contenente il batch e il set di modifiche. Il payload include due limiti MIME:
Un limite batch include il set di modifiche.
Il limite del set di modifiche separa le singole operazioni di inserimento, aggiornamento ed eliminazione nel batch.
Una singola richiesta nel set di modifiche è identica a una richiesta effettuata quando l'operazione viene chiamata da se stessa. Ad esempio:
Per specificare l'intestazione
If-Match
su un'operazione di aggiornamento, unione o eliminazione, includere l'intestazione nel set di intestazioni di richiesta per l'operazione appropriata nel set di modifiche.Per specificare il formato del payload (JSON o ATOM) per ogni operazione nel set di modifiche, includere le intestazioni , e
DataServiceVersion
appropriateVersion
Content-Type
Accept
, come illustrato nei dettagli in Formato payload per le operazioni del servizio tabelle.Per eliminare l'eco del contenuto della risposta per l'entità Inserisci, specificare l'intestazione con il
Prefer
return-no-content
valore per ogni operazione di inserimento nel set di modifiche. Per altre informazioni sull'intestazionePrefer
, vedere Riepilogo delle funzionalità del servizio tabelle.
Richiesta di esempio per operazioni di inserimento, aggiornamento ed eliminazione
Negli esempi seguenti vengono illustrate le richieste batch contenenti due operazioni inserisci entità e un'operazione di entità merge . In questi esempi, poiché non si è interessati al payload echo nella risposta per le operazioni di inserimento, è inclusa l'intestazione Prefer:``return-no-content
.
Nota
JSON è il formato di payload consigliato ed è l'unico formato supportato per le versioni 2015-12-11 e successive.
JSON (versioni 2013-08-15 e successive)
Nell'esempio seguente viene illustrata una richiesta batch con un payload JSON.
POST https://myaccount.table.core.windows.net/$batch HTTP/1.1
x-ms-version: 2013-08-15
Accept-Charset: UTF-8
DataServiceVersion: 3.0;
MaxDataServiceVersion: 3.0;NetFx
Content-Type: multipart/mixed; boundary=batch_a1e9d677-b28b-435e-a89e-87e6a768a431
x-ms-date: Mon, 14 Oct 2013 18:25:49 GMT
Authorization: SharedKey myaccount:50daR38MtfezvbMdKrGJVN+8sjDSn+AaA=
Host: 127.0.0.1:10002
Content-Length: 1323
Connection: Keep-Alive
--batch_a1e9d677-b28b-435e-a89e-87e6a768a431
Content-Type: multipart/mixed; boundary=changeset_8a28b620-b4bb-458c-a177-0959fb14c977
--changeset_8a28b620-b4bb-458c-a177-0959fb14c977
Content-Type: application/http
Content-Transfer-Encoding: binary
POST https://myaccount.table.core.windows.net/Blogs HTTP/1.1
Content-Type: application/json
Accept: application/json;odata=minimalmetadata
Prefer: return-no-content
DataServiceVersion: 3.0;
{"PartitionKey":"Channel_19", "RowKey":"1", "Rating":9, "Text":".NET..."}
--changeset_8a28b620-b4bb-458c-a177-0959fb14c977
Content-Type: application/http
Content-Transfer-Encoding: binary
POST https://myaccount.table.core.windows.net/Blogs HTTP/1.1
Content-Type: application/json
Accept: application/json;odata=minimalmetadata
Prefer: return-no-content
DataServiceVersion: 3.0;
{"PartitionKey":"Channel_17", "RowKey":"2", "Rating":9, "Text":"Azure..."}
--changeset_8a28b620-b4bb-458c-a177-0959fb14c977
Content-Type: application/http
Content-Transfer-Encoding: binary
MERGE https://myaccount.table.core.windows.net/Blogs(PartitionKey='Channel_17', RowKey='3') HTTP/1.1
Content-Type: application/json
Accept: application/json;odata=minimalmetadata
DataServiceVersion: 3.0;
{"PartitionKey":"Channel_19", "RowKey":"3", "Rating":9, "Text":"PDC 2008..."}
--changeset_8a28b620-b4bb-458c-a177-0959fb14c977--
--batch_a1e9d677-b28b-435e-a89e-87e6a768a431
Feed atom (versioni precedenti al 2015-12-11)
Nell'esempio seguente viene illustrata una richiesta batch con un payload Atom.
POST /$batch HTTP/1.1
User-Agent: Microsoft ADO.NET Data Services
x-ms-version: 2013-08-15
x-ms-date: Thu, 30 Aug 2013 20:45:13 GMT
Authorization: SharedKeyLite myaccount:asOEzsCDS7YEe6oi+bx47KMwbXL0lYZCOlR/oc3FReQ=
Accept: application/atom+xml,application/xml
Accept-Charset: UTF-8
DataServiceVersion: 1.0;NetFx
MaxDataServiceVersion: 2.0;NetFx
Content-Type: multipart/mixed; boundary=batch_a1e9d677-b28b-435e-a89e-87e6a768a431
Host: MyHostName:10002
Prefer: return-no-content
Content-Length: ###
--batch_a1e9d677-b28b-435e-a89e-87e6a768a431
Content-Type: multipart/mixed; boundary=changeset_8a28b620-b4bb-458c-a177-0959fb14c977
--changeset_8a28b620-b4bb-458c-a177-0959fb14c977
Content-Type: application/http
Content-Transfer-Encoding: binary
POST https://myaccount.table.core.windows.net/Blogs HTTP/1.1
Content-ID: 1
Content-Type: application/atom+xml;type=entry
Content-Length: ###
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="https://www.w3.org/2005/Atom">
<title />
<author>
<name />
</author>
<id />
<content type="application/xml">
<m:properties>
<d:PartitionKey>Channel_19</d:PartitionKey>
<d:RowKey>1</d:RowKey>
<d:Rating m:type="Edm.Int32">9</d:Rating>
<d:Text>.NET...</d:Title>
</m:properties>
</content>
</entry>
--changeset_8a28b620-b4bb-458c-a177-0959fb14c977
Content-Type: application/http
Content-Transfer-Encoding: binary
POST https://myaccount.table.core.windows.net/Blogs HTTP/1.1
Content-ID: 2
Content-Type: application/atom+xml;type=entry
Prefer: return-no-content
Content-Length: ###
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="https://www.w3.org/2005/Atom">
<title />
<author>
<name />
</author>
<id />
<content type="application/xml">
<m:properties>
<d:PartitionKey>Channel_19</d:PartitionKey>
<d:RowKey>2</d:RowKey>
<d:Rating m:type="Edm.Int32">9</d:Rating>
<d:Text>Azure...</d:Title>
</m:properties>
</content>
</entry>
--changeset_8a28b620-b4bb-458c-a177-0959fb14c977
Content-Type: application/http
Content-Transfer-Encoding: binary
MERGE https://myaccount.table.core.windows.net/Blogs(PartitionKey='Channel_19', RowKey='3') HTTP/1.1
Content-ID: 3
Content-Type: application/atom+xml;type=entry
Content-Length: ###
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="https://www.w3.org/2005/Atom">
<title />
<author>
<name />
</author>
<id>https://myaccount.table.core.windows.net/Blogs(PartitionKey='Channel_19',RowKey='3')</id>
<content type="application/xml">
<m:properties>
<d:PartitionKey>Channel_19</d:PartitionKey>
<d:RowKey>3</d:RowKey>
<d:Rating m:type="Edm.Int32">9</d:Rating>
<d:Text>PDC 2008...</d:Title>
</m:properties>
</content>
</entry>
--changeset_8a28b620-b4bb-458c-a177-0959fb14c977--
--batch_a1e9d677-b28b-435e-a89e-87e6a768a431—
Richiesta di esempio per le query
Negli esempi seguenti viene illustrata una richiesta batch per una query. È possibile includere nel set di modifiche una sola query.
Nota
JSON è il formato di payload consigliato ed è l'unico formato supportato per le versioni 2015-12-11 e successive.
JSON (versioni 2013-08-15 e successive)
Nell'esempio seguente viene illustrata una richiesta batch con un payload JSON.
POST https://myaccount.table.core.windows.net/$batch HTTP/1.1
x-ms-version: 2013-08-15
Accept-Charset: UTF-8
DataServiceVersion: 3.0;
MaxDataServiceVersion: 3.0;NetFx
Content-Type: multipart/mixed; boundary=batch_f351702c-c8c8-48c6-af2c-91b809c651ce
x-ms-date: Mon, 14 Oct 2013 19:03:55 GMT
Authorization: SharedKey testaccount1:y6TxCsXeRiR4l1KqihwRJ05Qb5zBk=
Host: 127.0.0.1:10002
Content-Length: 255
Connection: Keep-Alive
--batch_f351702c-c8c8-48c6-af2c-91b809c651ce
Content-Type: application/http
Content-Transfer-Encoding: binary
GET https://myaccount.table.core.windows.net/Blogs(PartitionKey='Channel_19',RowKey='2') HTTP/1.1
Accept: application/json;odata=minimalmetadata
--batch_f351702c-c8c8-48c6-af2c-91b809c651ce
Feed atom (versioni precedenti al 2015-12-11)
Nell'esempio seguente viene illustrata una richiesta batch con un payload Atom.
POST /$batch HTTP/1.1
User-Agent: Microsoft ADO.NET Data Services
x-ms-version: 2013-08-15
x-ms-date: Thu, 30 Aug 2013 20:45:13 GMT
Authorization: SharedKeyLite myaccount:asOEzsCDS7YEe6oi+bx47KMwbXL0lYZCOlR/oc3FReQ=
Accept: application/atom+xml,application/xml
Accept-Charset: UTF-8
DataServiceVersion: 3.0;NetFx
MaxDataServiceVersion: 3.0;NetFx
Content-Type: multipart/mixed; boundary=batch_f351702c-c8c8-48c6-af2c-91b809c651ce
Content-Length: ###
--batch_f351702c-c8c8-48c6-af2c-91b809c651ce
Content-Type: application/http
Content-Transfer-Encoding: binary
GET https://myaccount.table.core.windows.net/Blogs(PartitionKey='Channel_19',RowKey='2') HTTP/1.1
--batch_f351702c-c8c8-48c6-af2c-91b809c651ce—
Sintassi della risposta batch
La risposta restituisce un codice di stato globale per la richiesta batch e singoli codici di stato e frammenti di risultato per ogni operazione nel set di modifiche. La risposta è un messaggio MIME in più parti che include un limite batch e un limite del set di modifiche.
Il servizio tabelle restituisce un codice di stato per l'intera richiesta batch e uno o più codici di stato per le operazioni nel set di modifiche, a seconda del fatto che abbiamo avuto esito positivo o esito negativo.
Supponendo che la richiesta batch sia stata autorizzata correttamente e che sia stata ricevuta correttamente dal servizio Tabelle, la richiesta batch restituisce il codice di stato 202 (accettato), anche se una delle operazioni nel set di modifiche ha esito negativo. Se la richiesta batch ha esito negativo, l'errore si verifica prima che venga eseguita qualsiasi operazione nel set di modifiche. Ad esempio, la richiesta batch potrebbe non riuscire a causa di un errore di autorizzazione, nel qual caso il codice di stato indicherà l'errore.
Le operazioni in un set di modifiche vengono elaborate in modo atomico. Ciò significa che tutte le operazioni nel batch avranno esito positivo, in caso contrario l'intero batch avrà esito negativo. Il servizio tabelle continua l'elaborazione delle operazioni nel set di modifiche finché una non ha esito negativo. Se un'operazione ha esito negativo, viene eseguito il rollback di tutte le operazioni precedenti nel batch. Le transazioni di gruppi di entità vengono eseguite con isolamento dello snapshot.
Il codice di stato per una singola operazione in un set di modifiche viene visualizzato nella risposta del set di modifiche. Quando una singola operazione ha esito negativo, la risposta per il set di modifiche indica il codice di stato 400 (Bad Request
). Le informazioni aggiuntive sull'errore nella risposta indicano l'operazione che ha avuto esito negativo restituendo l'indice dell'operazione. L'indice è il numero di sequenza del comando nel payload.
Per un esempio, vedere la risposta all'errore riportata di seguito.
Risposta di esempio per operazioni di creazione, aggiornamento ed eliminazione
Negli esempi seguenti vengono illustrate le risposte per le operazioni batch inviate nelle richieste di esempio illustrate in precedenza.
JSON (versioni 2013-08-15 e successive)
Nell'esempio seguente viene illustrata una risposta per una richiesta effettuata con un payload JSON.
HTTP/1.1 202 Accepted
Cache-Control: no-cache
Content-Type: multipart/mixed; boundary=batchresponse_e69b1c6c-62ff-471e-ab88-9a4aeef0a880
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: ed9c96eb-9473-4fd9-abf6-fa4dcf0d6295
x-ms-version: 2013-08-15
X-Content-Type-Options: nosniff
Date: Mon, 14 Oct 2013 18:25:49 GMT
Content-Length: 1647
--batchresponse_e69b1c6c-62ff-471e-ab88-9a4aeef0a880
Content-Type: multipart/mixed; boundary=changesetresponse_a6253244-7e21-42a8-a149-479ee9e94a25
--changesetresponse_a6253244-7e21-42a8-a149-479ee9e94a25
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 204 No Content
Content-ID: 1
X-Content-Type-Options: nosniff
Cache-Control: no-cache
Preference-Applied: return-no-content
DataServiceVersion: 3.0;
Location: https://myaccount.table.core.windows.net/Blogs(PartitionKey='Channel_19',RowKey='1')
DataServiceId: https://myaccount.table.core.windows.net/Blogs (PartitionKey='Channel_19',RowKey='1')
ETag: W/"0x8D101F7E4B662C4"
--changesetresponse_a6253244-7e21-42a8-a149-479ee9e94a25
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 204 No Content
Content-ID: 2
X-Content-Type-Options: nosniff
Cache-Control: no-cache
Preference-Applied: return-no-content
DataServiceVersion: 3.0;
Location: https://myaccount.table.core.windows.net/Blogs (PartitionKey='Channel_19',RowKey='2')
DataServiceId: https://myaccount.table.core.windows.net/Blogs (PartitionKey='Channel_19',RowKey='2')
ETag: W/"0x8C134F7A4B692D8"
--changesetresponse_a6253244-7e21-42a8-a149-479ee9e94a25
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 204 No Content
Content-ID: 3
X-Content-Type-Options: nosniff
Cache-Control: no-cache
DataServiceVersion: 1.0;
ETag: W/"0x8A541B7C4D699D7"
--changesetresponse_a6253244-7e21-42a8-a149-479ee9e94a25--
--batchresponse_e69b1c6c-62ff-471e-ab88-9a4aeef0a880--
Feed atom (versioni precedenti al 2015-12-11)
Nell'esempio seguente viene illustrata una risposta per una richiesta effettuata con un payload Atom.
HTTP/1.1 202 Accepted
Cache-Control: no-cache
Transfer-Encoding: chunked
Content-Type: multipart/mixed; boundary=batchresponse_dc0fea8c-ed83-4aa8-ac9b-bf56a2d46dfb
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: b4b49b3e-19a9-4091-a280-da76a09da8d4
Date: Thu, 30 Aug 2013 20:44:09 GMT
334
batchresponse_dc0fea8c-ed83-4aa8-ac9b-bf56a2d46dfb
Content-Type: multipart/mixed; boundary=--changesetresponse_8a28b620-b4bb-458c-a177-0959fb14c977
--changesetresponse_8a28b620-b4bb-458c-a177-0959fb14c977
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 204 No Content
Content-ID: 1
Cache-Control: no-cache
Preference-Applied: return-no-content
ETag: W/"0x8D101F7E4B662C4"
Location: https://myaccount.table.core.windows.net/Blogs(PartitionKey='Channel_19',RowKey='1')
DataServiceVersion: 3.0;
--changesetresponse_8a28b620-b4bb-458c-a177-0959fb14c977
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 204 No Content
Content-ID: 2
Cache-Control: no-cache
Preference-Applied: return-no-content
ETag: W/"0x8C134F7A4B692D8"
Location: https://myaccount.table.core.windows.net/Blogs(PartitionKey='Channel_19',RowKey='2')
DataServiceVersion: 3.0;
--changesetresponse_8a28b620-b4bb-458c-a177-0959fb14c977
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 204 No Content
Content-ID: 3
Cache-Control: no-cache
ETag: W/"0x8A541B7C4D699D7"
DataServiceVersion: 3.0;
--changesetresponse_8a28b620-b4bb-458c-a177-0959fb14c977--
--batchresponse_4c637ba4-b2f8-40f8-8856-c2d10d163a83--
Risposta di esempio per le query
Negli esempi seguenti vengono illustrate le risposte per le query inviate nelle richieste di esempio illustrate in precedenza.
JSON (versioni 2013-08-15 e successive)
Nell'esempio seguente viene illustrata una risposta per una richiesta effettuata con un payload JSON.
HTTP/1.1 202 Accepted
Cache-Control: no-cache
Content-Type: multipart/mixed; boundary=batchresponse_0a568496-fb38-4a83-9984-5908d7f4c63d
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 6f2aafa3-19e9-434c-85f2-d178941c2d4b
x-ms-version: 2013-08-15
X-Content-Type-Options: nosniff
Date: Mon, 14 Oct 2013 19:13:30 GMT
Content-Length: 615
--batchresponse_0a568496-fb38-4a83-9984-5908d7f4c63d
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 200 OK
DataServiceVersion: 3.0;
Content-Type: application/json;odata=minimalmetadata;streaming=true;charset=utf-8
X-Content-Type-Options: nosniff
Cache-Control: no-cache
ETag: W/"0x5B168C7B6E589D2"
{"odata.metadata":" https://myaccount.table.core.windows.net/Blogs/$metadata#Blogs/@Element","PartitionKey":"Channel_19","RowKey":"2","Timestamp":"2013-10-14T18:25:49.8922467Z","Rating":9,"Text":"Azure..."}
--batchresponse_0a568496-fb38-4a83-9984-5908d7f4c63d--
Feed atom (versioni precedenti al 2015-12-11)
Nell'esempio seguente viene illustrata una risposta per una richiesta effettuata con un payload Atom.
HTTP/1.1 202 Accepted
Cache-Control: no-cache
Transfer-Encoding: chunked
Content-Type: multipart/mixed; boundary=batchresponse_4c637ba4-b2f8-40f8-8856-c2d10d163a83
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 9202c4a1-43af-4dc0-baca-aa71f7a7407b
Date: Thu, 30 Aug 2013 20:44:10 GMT
--batchresponse_4c637ba4-b2f8-40f8-8856-c2d10d163a83
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 200 OK
Content-Type: application/atom+xml;charset=utf-8
Cache-Control: no-cache
ETag: W/"0x5B168C7B6E589D2"
DataServiceVersion: 3.0;
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xml:base="http://127.0.0.1:10002/testaccount1/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" m:etag="W/"0x5B168C7B6E589D2"" xmlns="https://www.w3.org/2005/Atom">
<id> https://myaccount.table.core.windows.net/Blogs(PartitionKey='Channel_19',RowKey='1')</id>
<title type="text"></title>
<updated>2013-08-30T20:44:10Z</updated>
<author>
<name />
</author>
<link rel="edit" title="Blogs" href=" Blogs(PartitionKey='Channel_19',RowKey='2')" />
<category term="myaccount.Blogs" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
<content type="application/xml">
<m:properties>
<d:PartitionKey>Channel_19</d:PartitionKey>
<d:RowKey>2</d:RowKey>
<d:Timestamp m:type="Edm.DateTime">2013-08-30T20:44:09.5789464Z</d:Timestamp>
<d:Text>.Net...</d:RowKey>
<d:Rating m:type="Edm.Int32">9</d:Rating>
</m:properties>
</content>
</entry>
--batchresponse_4c637ba4-b2f8-40f8-8856-c2d10d163a83--
Risposta all'errore di esempio
Negli esempi seguenti vengono illustrate le risposte da richieste batch contenenti un'operazione che ha avuto esito negativo. Si noti che la risposta batch restituisce il codice di stato 202 (Accettato), mentre la singola operazione che ha avuto esito negativo restituisce il codice di stato 400 (Richiesta non valida). Le informazioni aggiuntive sull'errore sono incluse nel corpo della risposta per l'operazione che ha avuto esito negativo. L'elemento code
specifica il codice di errore del servizio di archiviazione, mentre l'elemento message
inizia con l'indice dell'operazione che ha avuto esito negativo, seguito dalla stringa del messaggio di errore. Per individuare l'operazione che ha avuto esito negativo, analizzare il valore di indice nel messaggio. Le operazioni vengono indicizzate a partire da zero.
Risposta di errore alla richiesta in formato JSON
Nell'esempio relativo a JSON, notare che l'operazione che ha avuto esito negativo era la prima nel set di modifiche. Nella coppia nome/valore di message
, il messaggio inizia con 0
numerale, seguito da informazioni dettagliate sull'errore.
HTTP/1.1 202 Accepted
Cache-Control: no-cache
Content-Type: multipart/mixed; boundary=batchresponse_4e1c04af-af2b-4cfc-9e35-7677a5efcfca
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 8abd3c55-a72e-47ba-ae0b-ba43abeb76ae
x-ms-version: 2013-08-15
X-Content-Type-Options: nosniff
Date: Mon, 14 Oct 2013 19:21:58 GMT
Content-Length: 1051
--batchresponse_4e1c04af-af2b-4cfc-9e35-7677a5efcfca
Content-Type: multipart/mixed; boundary=changesetresponse_e2a26601-bba8-4c1a-8a8c-bb66badcbca1
--changesetresponse_e2a26601-bba8-4c1a-8a8c-bb66badcbca1
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 400 Bad Request
Content-ID: 1
X-Content-Type-Options: nosniff
DataServiceVersion: 3.0;
Content-Type: application/json;odata=minimalmetadata;streaming=true;charset=utf-8
{"odata.error":{"code":"OutOfRangeInput","message":{"lang":"en-US","value":"0:One of the request inputs is out of range.\nRequestId:8abd3c55-a72e-47ba-ae0b-ba43abeb76ae\nTime:2013-10-14T19:21:58.0890048Z}}}
--changesetresponse_e2a26601-bba8-4c1a-8a8c-bb66badcbca1--
--batchresponse_4e1c04af-af2b-4cfc-9e35-7677a5efcfca--
Risposta di errore alla richiesta in formato Atom
Nell'esempio relativo ad Atom, notare che l'operazione che ha avuto esito negativo era la quarta nel set di modifiche. Nell'elemento message
il messaggio inizia con il numerale 3
, seguito da informazioni dettagliate sull'errore.
<message xml:lang="en-US">3:One of the request inputs is not valid.</message>
Di seguito è riportata la risposta completa:
HTTP/1.1 202 Accepted
Cache-Control: no-cache
Transfer-Encoding: chunked
Content-Type: multipart/mixed; boundary=batchresponse_7ab1553a-7dd6-44e7-8107-bf1ea1ab1876
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 45ac953e-a4a5-42ba-9b4d-97bf74a8a32e
Date: Thu, 30 Apr 2009 20:45:13 GMT
6E7
--batchresponse_7ab1553a-7dd6-44e7-8107-bf1ea1ab1876
Content-Type: multipart/mixed; boundary=changesetresponse_6cc856b4-8cb9-41eb-b8d2-bb73475c6cec
--changesetresponse_6cc856b4-8cb9-41eb-b8d2-bb73475c6cec
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 400 Bad Request
Content-ID: 4
Content-Type: application/xml
Cache-Control: no-cache
DataServiceVersion: 1.0;
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<code>InvalidInput</code>
<message xml:lang="en-US">3:One of the request inputs is not valid.</message>
</error>
--changesetresponse_6cc856b4-8cb9-41eb-b8d2-bb73475c6cec--
--batchresponse_7ab1553a-7dd6-44e7-8107-bf1ea1ab1876--