Durchführen von Entitätsgruppentransaktionen
Der Tabellenspeicherdienst unterstützt Batchtransaktionen für Entitäten, die sich in derselben Tabelle befinden und der gleichen Partitionsgruppe angehören. Innerhalb einer einzelnen Transaktion werden mehrere Vorgänge Entität einfügen, Entität aktualisieren, Entität zusammenführen, Entität löschen, Entität einfügen oder ersetzen sowie Entität einfügen oder zusammenführen unterstützt.
Anforderungen für Entitätsgruppentransaktionen
Eine Entitätsgruppentransaktion muss die folgenden Voraussetzungen erfüllen:
Alle Entitäten, für die im Rahmen der Transaktion Vorgänge ausgeführt werden, müssen denselben
PartitionKey
-Wert aufweisen.Eine Entität kann in der Transaktion nur einmal enthalten sein, und pro Entität kann nur ein Vorgang ausgeführt werden.
Die Transaktion kann höchstens 100 Entitäten enthalten, und die Gesamtnutzlast darf maximal 4 MiB groß sein.
Alle Entitäten unterliegen den unter Grundlegendes zum Tabellendienstdatenmodell beschriebenen Einschränkungen.
Tabellendienstunterstützung für OData-Batchanforderungen
Die Semantik für Entitätsgruppentransaktionen wird durch die OData-Protokollspezifikation definiert. In der OData-Spezifikation sind die folgenden Konzepte für Batchanforderungen definiert:
Ein Changeset ist eine Gruppe, die mindestens einen Einfüge-, Update- oder Löschvorgang umfasst.
Ein Batch ist ein Container von Vorgängen, der ein oder mehrere Changesets und Abfragevorgänge enthält.
Der Tabellendienst unterstützt eine Teilmenge der Funktionen, die in der OData-Spezifikation definiert sind:
- Der Tabellendienst unterstützt nur ein einziges Changeset in einem Batch. Das Changeset kann mehrere Einfüge-, Update- und Löschvorgänge enthalten. Wenn ein Batch mehrere Changesets enthält, wird das erste Changeset vom Dienst verarbeitet, und weitere Changesets werden mit dem Statuscode 400 abgelehnt (Ungültige Anforderung).
Wichtig
Mehrere Vorgänge für eine einzelne Entität sind in einem Changeset nicht zulässig.
Beachten Sie, dass ein Abfragevorgang nicht in einem Batch zulässig ist, der Einfüge-, Update- oder Löschvorgänge enthält; er muss einzeln im Batch gesendet werden.
Vorgänge innerhalb eines Changesets werden atomar verarbeitet; d. h., alle Vorgänge im Changeset werden entweder erfolgreich ausgeführt, oder alle schlagen fehl. Vorgänge werden in der Reihenfolge verarbeitet, in der sie im Changeset angegeben sind.
Das Verknüpfen von Vorgängen in einem Changeset wird vom Tabellendienst nicht unterstützt.
Der Tabellendienst unterstützt maximal 100 Vorgänge in einem Changeset.
Entitätsgruppentransaktionen über REST
In den folgenden Abschnitten wird beschrieben, wie eine Batchanforderung erstellt und die Batchantwort interpretiert wird; dies wird jeweils mit Beispielen veranschaulicht.
Syntax für Batchanforderungen
Um eine Batchanforderung über REST auszuführen, geben Sie die $batch
Option für den Anforderungs-URI an. Beispiel:
https://myaccount.table.core.windows.net/$batch
Beachten Sie, dass der Anforderungs-URI nicht den Tabellennamen enthält.
Eine Batchanforderung wird mit einer einzigen POST-Direktive an den Server gesendet. Diese Anforderung muss den x-ms-version
-Header enthalten; der Wert des Headers muss auf 2009-04-14
oder eine neuere Version festgelegt sein.
Die XML-Nutzlast ist eine mehrteilige MIME-Nachricht, die den Batch und das Changeset enthält. Die Nutzlast schließt zwei MIME-Begrenzungen ein:
Eine Batchbegrenzung umfasst das Changeset.
Eine Changesetbegrenzung trennt die einzelnen Einfüge-, Update- und Löschvorgänge im Batch.
Eine einzelne Anforderung im Changeset ist identisch mit einer Anforderung, die ausgeführt wird, wenn ein Vorgang allein aufgerufen wird. Beispiel:
Um den
If-Match
-Header für einen Update-, Merge- oder Löschvorgang anzugeben, schließen Sie den Header in den Satz von Anforderungsheadern für den entsprechenden Vorgang im Changeset ein.Um das Nutzlastformat (JSON oder ATOM) für jeden Vorgang im Änderungssatz anzugeben, schließen Sie die entsprechenden
Content-Type
Header ,Accept
undVersion
DataServiceVersion
ein, wie in details unter Nutzlastformat für Tabellendienstvorgänge erläutert.Um das Echo des Antwortinhalts für die Insert-Entität zu unterdrücken, geben Sie den
Prefer
Header mit demreturn-no-content
Wert für jeden Einfügevorgang im Änderungssatz an. Weitere Informationen zumPrefer
Header finden Sie unter Zusammenfassung der Tabellendienstfunktionalität.
Beispielanforderung für Einfüge-, Update- und Löschvorgänge
Die folgenden Beispiele zeigen Batchanforderungen, die zwei Vorgänge zum Einfügen von Entitäten und einen Vorgang "Entität zusammenführen " enthalten. Da wir in diesen Beispielen nicht an der Echonutzlast in der Antwort für die Einfügevorgänge interessiert sind, schließen wir den Header ein Prefer:``return-no-content
.
Hinweis
JSON ist das empfohlene Nutzlastformat und das einzige Format, das für Versionen 2015-12-11 und höher unterstützt wird.
JSON (Versionen 2013-08-15 und höher)
Das folgende Beispiel zeigt eine Batchanforderung mit einer JSON-Nutzlast.
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
Atom Feed (Versionen vor 2015-12-11)
Das folgende Beispiel zeigt eine Batchanforderung mit einer Atom-Nutzlast.
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—
Beispielanforderung für Abfragen
In den folgenden Beispielen wird eine Batchanforderung für eine Abfrage veranschaulicht. Beachten Sie, dass im Changeset nur eine einzige Abfrage enthalten sein kann.
Hinweis
JSON ist das empfohlene Nutzlastformat und das einzige Format, das für Versionen 2015-12-11 und höher unterstützt wird.
JSON (Versionen 2013-08-15 und höher)
Das folgende Beispiel zeigt eine Batchanforderung mit einer JSON-Nutzlast.
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
Atom Feed (Versionen vor 2015-12-11)
Das folgende Beispiel zeigt eine Batchanforderung mit einer Atom-Nutzlast.
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—
Syntax für Batchantworten
Die Antwort gibt einen allgemeinen Statuscode für die Batchanforderung sowie einzelne Statuscodes und Ergebnisfragmente für jeden Vorgang im Changeset zurück. Die Antwort ist eine mehrteilige MIME-Nachricht, die eine Batchbegrenzung und eine Changesetbegrenzung enthält.
Der Tabellendienst gibt einen Statuscode für die gesamte Batchanforderung sowie einen oder mehrere Statuscodes für die Vorgänge im Changeset zurück, je nachdem, ob diese erfolgreich ausgeführt wurden oder fehlgeschlagen sind.
Unter der Annahme, dass die Batchanforderung ordnungsgemäß autorisiert wurde und erfolgreich vom Tabellendienst empfangen wurde, gibt die Batchanforderung status Code 202 (Akzeptiert) zurück, auch wenn einer der Vorgänge im Änderungssatz fehlschlägt. Wenn die Batchanforderung selbst fehlschlägt, schlägt sie fehl, bevor ein Vorgang im Changeset ausgeführt wird. Beispielsweise kann die Batchanforderung aufgrund eines Autorisierungsfehlers fehlschlagen. In diesem Fall weist der status Code auf diesen Fehler hin.
Die Vorgänge in einem Changeset werden atomar verarbeitet; d. h., entweder alle Vorgänge im Batch werden erfolgreich abgeschlossen, oder der gesamte Batch schlägt fehl. Der Tabellendienst fährt mit dem Verarbeiten von Vorgängen im Changeset fort, bis ein Vorgang fehlschlägt. Bei einem Vorgangsfehler erfolgt ein Rollback aller vorherigen Vorgänge im Batch. Darüber hinaus werden Entitätsgruppentransaktionen mit Momentaufnahmeisolation ausgeführt.
Der Statuscode für einen einzelnen Vorgang innerhalb eines Changesets wird in der Changesetantwort angezeigt. Wenn ein einzelner Vorgang fehlschlägt, enthält die Antwort für das Changeset den Statuscode 400 (Bad Request
). Zusätzliche Fehlerinformationen in der Antwort geben an, welcher Vorgang fehlgeschlagen ist. Hierfür wird der Index des betreffenden Vorgangs zurückgegeben. Der Index ist die Sequenznummer des Befehls in der Nutzlast.
Ein Beispiel dafür finden Sie unten in der Beispielfehlerantwort.
Beispielantwort für Erstell-, Update- und Löschvorgänge
In den folgenden Beispielen werden die Antworten für die Batchvorgänge veranschaulicht, die in den obigen Beispielanforderungen gesendet wurden.
JSON (Versionen 2013-08-15 und höher)
Das folgende Beispiel zeigt eine Antwort für eine Anforderung mit einer JSON-Nutzlast.
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--
Atom Feed (Versionen vor 2015-12-11)
Das folgende Beispiel zeigt eine Antwort für eine Anforderung mit einer Atom-Nutzlast.
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--
Beispielantwort für Abfragen
In den folgenden Beispielen werden die Antworten für die Abfragen veranschaulicht, die in den obigen Beispielanforderungen gesendet wurden.
JSON (Versionen 2013-08-15 und höher)
Das folgende Beispiel zeigt eine Antwort für eine Anforderung mit einer JSON-Nutzlast.
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--
Atom Feed (Versionen vor 2015-12-11)
Das folgende Beispiel zeigt eine Antwort für eine Anforderung mit einer Atom-Nutzlast.
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--
Beispielfehlerantwort
In den folgenden Beispielen werden die Antworten aus Batchanforderungen veranschaulicht, die einen fehlgeschlagenen Vorgang enthalten. Beachten Sie, dass die Batchantwort Statuscode 202 (Akzeptiert) zurückgibt, der einzelne Vorgang, der fehlgeschlagen ist, gibt hingegen Statuscode 400 (Ungültige Anforderung) zurück. Die zusätzlichen Fehlerinformationen sind im Antworttext für den fehlgeschlagenen Vorgang enthalten. Das code
-Element gibt den Speicherdienst-Fehlercode an, während das message
-Element mit dem Index für den fehlgeschlagenen Vorgang beginnt, gefolgt von der Zeichenfolge der Fehlermeldung. Analysieren Sie den Indexwert der Nachricht, um den fehlgeschlagenen Vorgang zu bestimmen. Vorgänge werden beginnend mit 0 (null) indiziert.
Fehlerantwort auf die Anforderung im JSON-Format
Im JSON-Beispiel stellen Sie fest, dass der fehlgeschlagene Vorgang der erste Vorgang im Changeset war. Innerhalb des message
-Name-Paar-Werts beginnt die Nachricht mit der Ziffer 0
, gefolgt von den erweiterten Fehlerinformationen.
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--
Fehlerantwort auf eine Anforderung im Atom-Format
Im Atom-Beispiel stellen Sie fest, dass der fehlgeschlagene Vorgang der vierte Vorgang im Changeset war. Innerhalb des message
-Elements beginnt die Nachricht mit der Ziffer 3
, gefolgt von den erweiterten Fehlerinformationen.
<message xml:lang="en-US">3:One of the request inputs is not valid.</message>
Dies ist die vollständige Antwort:
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--