Exportar (0) Imprimir
Expandir todo

Realizar transacciones con grupos de entidades

Actualizado: marzo de 2014

El servicio Tabla admite transacciones por lotes con entidades que están en la misma tabla y pertenecen al mismo grupo de partición. Se admiten varias operaciones Insert Entity (API de REST), Update Entity (API de REST), Merge Entity (API de REST), Delete Entity (API de REST), Insert Or Replace Entity (API de REST) e Insert Or Merge Entity (API de REST) en una única transacción.

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 la carga completa no debe superar los 4 MB.

  • Todas las entidades están sujetas a las limitaciones descritas en Introducción al modelo de datos del servicio Tabla.

La semántica para las transacciones de grupo de entidad se definen por la Especificación de 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.

El Servicio Tabla admite un subconjunto de funcionalidad definido por la especificación OData:

  • El servicio Tabla 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).

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

  • El servicio Tabla 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.

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.

Para realizar una solicitud por lotes a través de REST, especifique la opción $batch 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 Content-Type, Accept, Version y DataServiceVersion adecuados, como se explica en los detalles de Formato de carga para las operaciones del servicio Tabla.

  • Para suprimir el eco de contenido de la respuesta para Insert Entity (API de REST), especifique el encabezado Prefer con el valor return-no-content para cada operación de inserción del conjunto de cambios. Para obtener más información sobre el encabezado Prefer, vea Resumen de la funcionalidad del servicio Tabla.

En los ejemplos siguientes se muestran solicitudes por lotes que contiene dos operaciones Insert Entity (API de REST) y una operación Merge Entity (API de REST). En estos ejemplos, como no nos interesa la carga de eco en la respuesta para las operaciones de inserción, incluimos el encabezado Prefer:return-no-content.

Solicitud por lotes con carga 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="http://www.w3.org/2005/Atom">
  <title />
  <updated>2013-08-30T20:45:13.7155321Z</updated>
  <author>
    <name />
  </author>
  <id />
  <content type="application/xml">
    <m:properties>
      <d:PartitionKey>Channel_19</d:PartitionKey>
      <d:RowKey>1</d:RowKey>
      <d:Timestamp m:type="Edm.DateTime">0001-01-01T00:00:00</d:Timestamp>
      <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="http://www.w3.org/2005/Atom">
  <title />
  <updated>2013-08-30T20:45:13.7155321Z</updated>
  <author>
    <name />
  </author>
  <id />
  <content type="application/xml">
    <m:properties>
      <d:PartitionKey>Channel_19</d:PartitionKey>
      <d:RowKey>2</d:RowKey>
      <d:Timestamp m:type="Edm.DateTime">0001-01-01T00:00:00</d:Timestamp>
      <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="http://www.w3.org/2005/Atom">
  <title />
  <updated>2013-08-30T20:44:09.8869156Z</updated>
  <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:Timestamp m:type="Edm.DateTime">0001-01-01T00:00:00</d:Timestamp>
      <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 por lotes con 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

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.

Consulta por lotes con formato 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—

Consulta por lotes con formato 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

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 ha sido autenticada y recibida correctamente por el servicio Tabla, dicha solicitud devuelve el código de estado 202 (Aceptado), incluso si una de las operaciones del conjunto de cambios produce un error. 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 de autenticació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.

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

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

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

Respuesta de la consulta por lotes con formato 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/&quot;0x5B168C7B6E589D2&quot;" xmlns="http://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 la consulta por lotes con formato 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--

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

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

Vea también

Mostrar:
© 2014 Microsoft