Partager via


Exécution de transactions de groupe d’entités

Le service de Table prend en charge les transactions par lots sur les entités qui se trouvent dans la même table et qui appartiennent au même groupe de partitions. Les opérations d’insertion multiple d’entité, de mise à jour d’entité, d’entité de fusion, de suppression d’entité, d’insertion ou de remplacement et d’entité d’insertion ou de fusion sont prises en charge dans une seule transaction.

Configuration requise pour les transactions de groupe d’entités

Une transaction de groupe d'entités doit remplir les conditions suivantes :

  • Toutes les entités sujettes aux opérations dans le cadre de la transaction doivent avoir la même valeur PartitionKey.

  • Une entité peut s'afficher une seule fois dans la transaction, et une seule opération peut être exécutée dessus.

  • La transaction peut inclure au maximum 100 entités, et sa charge utile totale ne peut pas dépasser 4 Mio.

  • Toutes les entités sont soumises aux limitations décrites dans Présentation du modèle de données du service de table.

Prise en charge du service Table pour les demandes par lots OData

La sémantique des transactions de groupe d’entités est définie par la spécification du protocole OData. La spécification OData définit les concepts suivants pour les demandes de lot :

  • Un ensemble de modifications est un groupe d'une ou plusieurs opérations d'insertion, de mise à jour ou de suppression.

  • Un lot est un conteneur d'opérations, qui comprend un ou plusieurs ensembles de modifications et opérations de requête.

Le service Table prend en charge un sous-ensemble des fonctionnalités définies par la spécification OData :

  • Le service Table prend en charge un seul ensemble de modifications au sein d'un lot. L'ensemble de modifications peut inclure plusieurs opérations d'insertion, de mise à jour et de suppression. Si un lot comprend plusieurs ensembles de modifications, le premier ensemble de modifications sera traité par le service, et les ensembles de modifications supplémentaires seront rejetés avec le code d'état 400 (Demande incorrecte).

Important

Plusieurs opérations sur une seule entité ne sont pas autorisées dans un ensemble de modifications.

  • Notez qu'une opération de requête n'est pas autorisée au sein d'un lot qui contient des opérations d'insertion, de mise à jour ou de suppression ; elle doit être envoyée séparément dans le lot.

  • Les opérations dans un ensemble de modifications sont traitées de façon atomique ; autrement dit, toutes les opérations dans l'ensemble de modifications réussissent ou échouent. Les opérations sont traitées dans l'ordre dans lequel elles sont spécifiées dans l'ensemble de modifications.

  • Le service Table ne prend pas en charge les opérations de liaison dans un ensemble de modifications.

  • Le service Table prend en charge 100 opérations maximum dans un ensemble de modifications.

Transactions de groupe d'entités via REST

Les sections suivantes décrivent comment construire une demande de lot et comment interpréter la réponse de lot, et donnent des exemples.

Syntaxe de demande de lot

Pour effectuer une requête par lot via REST, spécifiez l’option $batch sur l’URI de la requête. Par exemple :

https://myaccount.table.core.windows.net/$batch  

Notez que l'URI de la demande n'inclut pas le nom de la table.

Une demande de lot est envoyée au serveur avec une seule directive POST. Cette demande doit inclure l'en-tête x-ms-version ; la valeur d'en-tête doit être définie à 2009-04-14 ou ultérieure.

La charge utile XML est un message MIME à plusieurs parties contenant le lot et l'ensemble de modifications. La charge utile comprend deux limites MIME :

  • Une limite de lot englobe l'ensemble de modifications.

  • Une limite d'ensemble de modifications sépare les opérations d'insertion, de mise à jour et de suppression individuelles du lot.

Une demande individuelle au sein de l'ensemble de modifications est identique à une demande faite quand cette opération est appelée seule. Par exemple :

  • Pour spécifier l'en-tête If-Match dans une opération de mise à jour, de fusion, ou de suppression, indiquez l'en-tête dans l'ensemble d'en-têtes de demande pour l'opération appropriée dans l'ensemble de modifications.

  • Pour spécifier le format de charge utile (JSON ou ATOM) pour chaque opération dans le jeu de modifications, incluez les en-têtes , AcceptVersion et DataServiceVersion appropriésContent-Type, comme expliqué en détail dans Format de charge utile pour les opérations de service de table.

  • Pour supprimer l’écho du contenu de la réponse pour l’entité Insert, spécifiez l’en-tête Prefer avec la return-no-content valeur pour chaque opération d’insertion dans le jeu de modifications. Pour plus d’informations sur l’en-tête Prefer , consultez Résumé des fonctionnalités du service de table.

Exemple de demande pour les opérations d'insertion, de mise à jour et de suppression

Les exemples suivants illustrent les demandes de lot contenant deux opérations Insérer une entité et une opération fusionner une entité. Dans ces exemples, étant donné que nous ne sommes pas intéressés par la charge utile d’écho dans la réponse pour les opérations d’insertion, nous incluons l’en-tête Prefer:``return-no-content .

Notes

JSON est le format de charge utile recommandé et est le seul format pris en charge pour les versions 2015-12-11 et ultérieures.

JSON (versions 2013-08-15 et ultérieures)

L’exemple suivant montre une requête par lot avec une charge utile 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  
  
Atom Feed (versions antérieures à 2015-12-11)

L’exemple suivant montre une requête par lot avec une charge utile 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—  
  

Exemple de demande pour les requêtes

Les exemples suivants illustrent une demande de lot pour une requête. Notez qu'une seule requête peut être incluse dans l'ensemble de modifications.

Notes

JSON est le format de charge utile recommandé et est le seul format pris en charge pour les versions 2015-12-11 et ultérieures.

JSON (versions 2013-08-15 et ultérieures)

L’exemple suivant montre une requête par lot avec une charge utile 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  
  
Atom Feed (versions antérieures à 2015-12-11)

L’exemple suivant montre une requête par lot avec une charge utile 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—  
  

Syntaxe de réponse de lot

La réponse renvoie le code d'état général pour la demande de lot, et des codes d'état et des fragments de résultat individuels pour chaque opération dans l'ensemble de modifications. La réponse est un message MIME à plusieurs parties qui comprend une limite de lot et une limite d'ensemble de modifications.

Le service Table renvoie un code d'état pour la demande de lot, et un ou plusieurs codes d'état pour les opérations dans l'ensemble de modifications, en fonction de la réussite ou de l'échec.

En supposant que la demande de lot a été correctement autorisée et qu’elle a été correctement reçue par le service De table, la demande de lot retourne status code 202 (Accepté), même si l’une des opérations du jeu de modifications échoue. Si la demande de lot elle-même échoue, elle échoue avant l'exécution d'une opération dans l'ensemble de modifications. Par exemple, la demande de lot peut échouer en raison d’une erreur d’autorisation, auquel cas le code status indique cet échec.

Les opérations dans un ensemble de modifications sont traitées de façon atomique ; autrement dit, toutes les opérations dans le lot réussissent ou échouent. Le service Table continue de traiter les opérations dans l'ensemble de modifications jusqu'à un échec. Si une opération échoue, toutes les opérations précédentes du lot sont restaurées. En outre, les transactions de groupe d'entités s'exécutent avec l'isolement d'instantané.

Le code d'état pour une opération individuelle dans un ensemble de modifications apparaît dans la réponse de l'ensemble de modifications. Lorsqu'une opération individuelle échoue, la réponse pour l'ensemble de modifications indique le code d'état 400 ({1><1}). Des informations d'erreur supplémentaires au sein de la réponse indiquent l'opération qui a échoué en retournant l'index de cette opération. L'index est le numéro de séquence de la commande dans la charge utile.

Pour obtenir un exemple, consultez l'exemple de réponse d'erreur ci-dessous.

Exemple de réponse pour des opérations de création, de mise à jour et de suppression

Les exemples suivants montre les réponses pour les opérations par lot envoyées dans les exemples de demande indiqués ci-dessus.

JSON (versions 2013-08-15 et ultérieures)

L’exemple suivant montre une réponse pour une requête effectuée avec une charge utile 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--  
  
Atom Feed (versions antérieures à 2015-12-11)

L’exemple suivant montre une réponse pour une requête effectuée avec une charge utile 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--  

Exemple de réponse pour les requêtes

Les exemples suivants montrent les réponses pour les requêtes envoyées dans les exemples de demande indiqués ci-dessus.

JSON (versions 2013-08-15 et ultérieures)

L’exemple suivant montre une réponse pour une requête effectuée avec une charge utile 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--  
Atom Feed (versions antérieures à 2015-12-11)

L’exemple suivant montre une réponse pour une requête effectuée avec une charge utile 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--  
  

Exemple de réponse d'erreur

Les exemples suivants illustrent des réponses de demandes de lot contenant une opération qui a échoué. Notez que la réponse de lot renvoie le code d'état 202 (Acceptée), mais l'opération individuelle qui a échoué renvoie le code d'état 400 (Demande incorrecte). Des informations d'erreur supplémentaires sont incluses dans le corps de la réponse pour l'opération qui a échoué. L'élément code spécifie le code d'erreur du service de stockage, alors que l'élément message commence par l'index de l'opération qui a échoué, suivi de la chaîne de message d'erreur. Pour déterminer quelle opération a échoué, analysez la valeur d'index du message. Les opérations sont indexées en commençant à zéro.

Réponse d'erreur pour la demande au format JSON

Dans l'exemple JSON, notez que l'opération qui a échoué était la première opération dans l'ensemble de modifications. Dans la paire nom/valeur message, le message commence par le chiffre 0, suivi des informations d'erreur étendues.

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--  
  
Réponse d'erreur pour la demande au format Atom

Dans l'exemple Atom, notez que l'opération qui a échoué était la quatrième opération dans l'ensemble de modifications. Dans l'élément message, le message commence par le chiffre 3, suivi des informations d'erreur étendues.

<message xml:lang="en-US">3:One of the request inputs is not valid.</message>  

Voici la réponse complète :

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--  
  

Voir aussi

Spécification OData
Concepts du service de Table