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-TypeHeader , Acceptund VersionDataServiceVersion 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 dem return-no-content Wert für jeden Einfügevorgang im Änderungssatz an. Weitere Informationen zum Prefer 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--  
  

Weitere Informationen

OData-Spezifikation
Konzepte des Tabellenspeicherdiensts