Realización de transacciones de grupo de entidades

Table service admite transacciones por lotes en entidades que están en la misma tabla y pertenecen al mismo grupo de particiones. Se admiten varias operaciones de entidad de inserción, actualizar entidad, entidad de mezcla, eliminar entidad, insertar o reemplazar y operaciones de entidad de inserción o combinación dentro de una sola transacción.

Requisitos para las transacciones del grupo de entidades

Una transacción con grupos de entidades debe cumplir los requisitos siguientes:

  • Todas las entidades sujetas a operaciones como parte de la transacción deben tener el mismo valor PartitionKey.

  • Una entidad solo puede aparecer una vez en la transacción, y solo se puede realizar una operación en ella.

  • La transacción puede incluir como máximo 100 entidades y su carga total puede no tener más de 4 MiB de tamaño.

  • Todas las entidades están sujetas a las limitaciones descritas en Descripción del modelo de datos de Table Service.

Compatibilidad del servicio Tabla para solicitudes por lotes OData

La semántica de las transacciones del grupo de entidades se define mediante la especificación del protocolo OData. La especificación OData define los siguientes conceptos para solicitudes de lotes:

  • Un conjunto de cambios es un grupo de una o varias operaciones de inserción, actualización o eliminación.

  • Un lote es un contenedor de operaciones, incluyendo uno o varios conjuntos de cambios y operaciones de consulta.

Table service admite un subconjunto de funcionalidad definido por la especificación OData:

  • Table service solo admite un único conjunto de cambios en un lote. El conjunto de cambios puede incluir varias operaciones de inserción, actualización y eliminación. Si un lote incluye más de un conjunto de cambios, el servicio procesará el primero de ellos, y los conjuntos adicionales serán rechazados con el código de estado 400 (Solicitud incorrecta).

Importante

No se admiten varias operaciones en una sola entidad dentro de un conjunto de cambios.

  • Tenga en cuenta que no se permite una operación de consulta en un lote que contenga operaciones de inserción, actualización o eliminación; se debe enviar de forma individual en el lote.

  • Las operaciones dentro de un conjunto de cambios se procesan de forma atómica; es decir, o todas las operaciones del conjunto de cambios se realizan correctamente o el lote completo produce un error. Las operaciones se procesan en el orden en que se especifican en el conjunto de cambios.

  • Table service no admite operaciones de vinculación en un conjunto de cambios.

  • El servicio Tabla admite un máximo de 100 operaciones en un conjunto de cambios.

Transacciones con grupos de entidades a través de REST

En las secciones siguientes se describe cómo construir una solicitud por lotes y cómo interpretar la respuesta por lotes, e incluye ejemplos de cada una de las operaciones.

Sintaxis de la solicitud por lotes

Para realizar una solicitud por lotes a través de REST, especifique la $batch opción en el URI de solicitud. Por ejemplo:

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

Observe que el URI de solicitud no incluye el nombre de la tabla.

Se envía una solicitud por lotes al servidor con una única directiva POST. Esta solicitud debe incluir el encabezado x-ms-version; el valor del encabezado debe establecerse en 2009-04-14 o una versión más reciente.

La carga XML es un mensaje MIME de varias partes que contiene el lote y el conjunto de cambios. La carga incluye dos límites MIME:

  • Un límite de lote engloba el conjunto de cambios.

  • Un límite de conjunto de cambios separa las operaciones de inserción, actualización y eliminación individuales del lote.

Una solicitud individual del conjunto de cambios es idéntica a una solicitud que se realice cuando esa operación se llama a sí misma. Por ejemplo:

  • Para especificar el encabezado If-Match en una operación de actualización, combinación o eliminación, incluya el encabezado del conjunto de encabezados de solicitud para la operación correspondiente en el conjunto de cambios.

  • Para especificar el formato de carga (JSON o ATOM) para cada operación del conjunto de cambios, incluya los encabezados , AcceptVersion y DataServiceVersion adecuadosContent-Type, como se explica en detalles en Formato de carga para las operaciones de Table Service.

  • Para suprimir el eco de contenido de respuesta para la entidad de inserción, especifique el Prefer encabezado con el return-no-content valor de cada operación de inserción del conjunto de cambios. Para obtener más información sobre el encabezado, consulte Resumen de laPrefer funcionalidad de Table Service.

Solicitud de ejemplo para las operaciones de inserción, actualización y eliminación

En los ejemplos siguientes se muestran solicitudes por lotes que contienen dos operaciones insertar entidad y una operación de entidad de mezcla . En estos ejemplos, dado que no estamos interesados en la carga de eco en la respuesta de las operaciones de inserción, se incluye el Prefer:``return-no-content encabezado .

Nota:

JSON es el formato de carga recomendado y es el único formato admitido para las versiones 2015-12-11 y posteriores.

JSON (versiones 2013-08-15 y posteriores)

En el ejemplo siguiente se muestra una solicitud por lotes con una carga 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  
  
Fuente Atom (versiones anteriores a 2015-12-11)

En el ejemplo siguiente se muestra una solicitud por lotes con una carga de 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—  
  

Solicitud de ejemplo para consultas

En los ejemplos siguientes se muestra una solicitud por lotes para una consulta. Tenga en cuenta que solo se puede incluir una consulta en el conjunto de cambios.

Nota:

JSON es el formato de carga recomendado y es el único formato admitido para las versiones 2015-12-11 y posteriores.

JSON (versiones 2013-08-15 y posteriores)

En el ejemplo siguiente se muestra una solicitud por lotes con una carga 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  
  
Fuente Atom (versiones anteriores a 2015-12-11)

En el ejemplo siguiente se muestra una solicitud por lotes con una carga de 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—  
  

Sintaxis de la respuesta por lotes

La respuesta devuelve un código de estado general para la solicitud por lotes, así como códigos de estado individuales y fragmentos de resultados para cada operación del conjunto de cambios. La respuesta es un mensaje MIME de varias partes que incluye un límite de lote y un límite de conjunto de cambios.

El servicio Tabla devuelve un código de estado para la solicitud por lotes completa, y uno o varios códigos de estado para las operaciones del conjunto de cambios, dependiendo de si se realizaron correctamente o no.

Suponiendo que la solicitud por lotes se ha autorizado correctamente y que table service ha recibido correctamente, la solicitud por lotes devuelve el código de estado 202 (aceptado), incluso si se produce un error en una de las operaciones del conjunto de cambios. Si la propia solicitud por lotes produce un error, lo hará antes de que se ejecute ninguna operación del conjunto de cambios. Por ejemplo, la solicitud por lotes puede producir un error debido a un error de autorización, en cuyo caso el código de estado indicará ese error.

Las operaciones dentro de un conjunto de cambios se procesan de forma atómica; es decir, o todas las operaciones del conjunto de cambios se realizan correctamente o el lote completo produce un error. El servicio Tabla continúa procesando las operaciones del conjunto de cambios hasta que una produzca un error. En ese caso, todas las operaciones anteriores del lote se revierten. Además, las transacciones con grupos de entidades se ejecutan con aislamiento de instantánea.

El código de estado de una operación individual de un conjunto de cambios aparece en la respuesta del conjunto de cambios. Cuando una operación individual genera un error, la respuesta para el conjunto de cambios indica el código de estado 400 (Bad Request). La información adicional sobre el error incluida en la respuesta indica la operación que produjo el error devolviendo el índice de esa operación. El índice es el número de secuencia del comando en la carga.

Para obtener un ejemplo, vea la respuesta de error de ejemplo siguiente.

Respuesta de ejemplo para las operaciones de creación, actualización y eliminación

En los ejemplos siguientes se muestran las respuestas para las operaciones por lotes enviadas en las solicitudes de ejemplo mostradas anteriormente.

JSON (versiones 2013-08-15 y posteriores)

En el ejemplo siguiente se muestra una respuesta para una solicitud realizada con una carga 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--  
  
Fuente Atom (versiones anteriores a 2015-12-11)

En el ejemplo siguiente se muestra una respuesta para una solicitud realizada con una carga 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--  

Respuesta de ejemplo para consultas

En los ejemplos siguientes se muestran las respuestas para las consultas enviadas en las solicitudes de ejemplo mostradas anteriormente.

JSON (versiones 2013-08-15 y posteriores)

En el ejemplo siguiente se muestra una respuesta para una solicitud realizada con una carga 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--  
Fuente Atom (versiones anteriores a 2015-12-11)

En el ejemplo siguiente se muestra una respuesta para una solicitud realizada con una carga 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--  
  

Respuesta de error de ejemplo

En los ejemplos siguientes se muestran respuestas de solicitudes por lotes que contienen una operación que produjo un error. Observe que la respuesta por lotes devuelve el código de estado 202 (Aceptado), pero la operación individual que produjo el error devuelve el código de estado 400 (Solicitud incorrecta). La información adicional sobre el error se incluye en el cuerpo de respuesta para la operación en la que se produjo el error. El elemento code especifica el código de error del servicio de almacenamiento, mientras que el elemento message comienza por el índice de la operación que produjo el error, seguido de la cadena del mensaje de error. Para determinar la operación en la que se produjo el error, analice el valor de índice del mensaje. Las operaciones se indizan empezando por cero.

Respuesta de error para la solicitud en formato JSON

En el ejemplo de JSON, observe que la operación que produjo el error era la primera operación del conjunto de cambios. Dentro del par nombre-valor del elemento message, el mensaje comienza por el número 0, seguido de la información de error extendida.

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--  
  
Respuesta de error para la solicitud en formato Atom

En el ejemplo de Atom, observe que la operación que produjo el error era la cuarta operación del conjunto de cambios. En el elemento message, el mensaje comienza por el número 3, seguido de la información de error extendida.

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

Esta es la respuesta 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--  
  

Consulte también

Especificación de OData
Conceptos del servicio Tabla